listes avec sélection via les premières lettres et événement onChange

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : listes avec sélection via les premières lettres et événement onChange

par d0m » 15 févr. 2008, 17:08

merci pour l'astuce, en creusant un peu j'ai trouvé la syntaxe :

Code : Tout sélectionner

onKeyDown="if(liDown(this))return true;else{mafonction();return false;}"

par zeus » 15 févr. 2008, 16:42

lors du déclenchement de l'évènement onKeyDown, tu appelles une fonction JS, non ?
Pourquoi ne pas appeler la méthode qui est appelée lors de l'évènement onChange dans cette 1ere méthode ?

Re: listes avec sélection via les premières lettres et événe

par d0m » 15 févr. 2008, 15:52

Qu'est-ce qui te fait penser que tu n'as pas le droit ?
On ne sait jamais.

Bref ça m'embête un peu de pas pouvoir combiner auto-complétion et onChange...

Re: listes avec sélection via les premières lettres et événe

par zeus » 15 févr. 2008, 11:39

L'évènement onChange est appelé lorsque l'élément perd le focus, c'est à dire lorsque tu quittes le champs.
Cet évènement n'est donc pas adapté à faire de l'auto-complétion. ;)
@modérateurs, enlevez le si vous pensez que je n'ai pas le droit de le mettre :
Qu'est-ce qui te fait penser que tu n'as pas le droit ?

listes avec sélection via les premières lettres et événement

par d0m » 15 févr. 2008, 10:37

Bonjour,

j'ai récupéré un script pour liste déroulante qui permet la sélection d'éléments en le tapant au clavier, avec plus d'une lettre.
ex : pour les pays, taper F puis R va sélectionner France .

voilà le script qui fonctionne sur l'événement onKeyDown.
@modérateurs, enlevez le si vous pensez que je n'ai pas le droit de le mettre :

Code : Tout sélectionner

/* Script téléchargé du Coin Web de QuentinC http://www.quentinc.net/ Nom du script : Liste avec recherche clavier Catégorie : Formulaires Date de dernière modification : Lundi 23 janvier 2006 15:30 URL exact : /javascript/script39-exec-liste-avec-recherche-clavier/ Vous trouverez d'autres scripts à l'adresse : http://www.quentinc.net/javascript/ © 2002-2006, QuentinC Vous pouvez utiliser, modifier et redistribuer ce script, à condition de laisser les présents commentaires intacts, et de ne pas l'utiliser à des fins commerciales. */ var timer = null; var chaine = ""; function startsWith (str1, str2) { var k = str1.substring(0, str2.length); return (str2.toLowerCase() == k.toLowerCase()); } function liDown (list) { var c = event.keyCode; if (c < 48 && c!=32) return true; var s = String.fromCharCode(c); chaine += s; var n = list.selectedIndex; var ok = false; if (chaine.length > 1 && startsWith(list.options[n].text, chaine)) ok=true; for (var i=n+1; i < list.options.length && !ok; i++){ if (startsWith(list.options[i].text, chaine)) { n = i; ok = true; } } for (var i=0; i < n && !ok; i++) { if (startsWith(list.options[i].text, chaine)) { n = i; ok = true; } } list.selectedIndex = n; if (timer!=null) clearTimeout(timer); timer = setTimeout("clearChaine();", 500); return false; } function clearChaine () { chaine=""; } <SELECT .... onKeyDown="liDown(this);">
Le script fonctionne, par contre j'ai aussi sur cette liste une action sur l'événement onChange.
En sélectionnant un élément avec le clavier via ses premières lettre, l'élément onChange ne se produit jamais...

Une idée de comment remédier à ça?