Je rencontre un problème lié au mécanisme d'auto-complétion de firefox 1.0.6 et l'utilisation de "document.onkeydown".
Je dispose d'une page possèdant, entre autre, un champ de recherche ainsi qu'un script qui intercepte l'évenement de frappe sur la touche entrée. Lorsque l'on commence la saisie d'une valeur dans le champ de recherche, une liste apparait en dessous proposant des valeurs déja saisies. Jusque là tout est parfait ! Si l'utilisateur choisi l'une des valeurs (avec la souris ou les flèches du clavier) et appuie sur entrée pour valider son choix, la valeur n'est pas mémorisée avant que le script n'entre en action.
J'ai reproduit le problème avec une page html toute simple. J'affiche via un alert la valeur courante du champ avant l'envoi au serveur (il s'agit de la valeur incomplète!!)
Code : Tout sélectionner
<html>
<head><title>Essai</title></head>
<script language="JavaScript">
function keyDown1(e)
{
var element ;
if( !e ) {
//if the browser did not pass the event information to the
//function, we will have to obtain it from the event register
if( window.event ) {
e = window.event;
element = e.srcElement;
} else {
return;
}
}
else {
element = e.target;
}
if( typeof( e.which ) == 'number' ) {
//NS 4, NS 6+, Mozilla 0.9+, Opera
key = e.which;
} else if( typeof( e.keyCode ) == 'number' ) {
//IE, NS 6+, Mozilla 0.9+
key = e.keyCode;
} else if( typeof( e.charCode ) == 'number' ) {
//also NS 6+, Mozilla 0.9+
key = e.charCode;
} else {
return;
}
if (element == null) {
if (key == 13) alert(document.all.EDT2.value);
}
else if ((key == 13) && (element.type.toLowerCase() != "textarea")) alert(document.all.EDT2.value);
}
document.onkeydown=keyDown1;
</script>
<form><input type="TEXT" tabindex="1" class="labels" style="width:242; height:20;" name="EDT2" value=""/>Rechercher</form>
</body>
</html>
NB : désolé pour le message un peu long, mais le code source me parait indispensable pour bien me faire comprendre.