problème de complétion avec document.onkeydown

HTML5, CSS3, Javascript, support des mobiles... Que penser de votre site ? Vous manquez d'informations pour la construction d'un site qui puisse s'afficher correctement partout ? C'est un problème simple, un peu complexe ? Venez ici !
pef
Arias
Messages : 2
Inscription : 27 juil. 2005, 19:51

problème de complétion avec document.onkeydown

Message par pef »

Bonjour,

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>
Connaissez vous un moyen de contourner ce problème ?
NB : désolé pour le message un peu long, mais le code source me parait indispensable pour bien me faire comprendre.
Jigho
Iguane
Messages : 637
Inscription : 29 juil. 2003, 08:44

Message par Jigho »

J'ai fait un peu de mise en forme avec la balise [ code ], c'est plus lisible !

Et je te déplace dans la rubrique "developpement web", c'est plus approprié
pef
Arias
Messages : 2
Inscription : 27 juil. 2005, 19:51

Message par pef »

merci
Répondre

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 0 invité