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);">
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?