Salut à tous,
Voilà le problème, lorsque sur IE (et d'autres ?) on se positionne sur une liste déroulante, le fait d'appuyer sur une touche positionne la liste sur le premiere élément dont la première lettre correspond à celle enfoncée.
Pas pratique sur des listes longues.
Proposition :
avez vous d'autres technique à base de select?
Modifié par CanardWc (07 Mar 2006 - 16:04)
Voilà le problème, lorsque sur IE (et d'autres ?) on se positionne sur une liste déroulante, le fait d'appuyer sur une touche positionne la liste sur le premiere élément dont la première lettre correspond à celle enfoncée.
Pas pratique sur des listes longues.
Proposition :
<select onkeypress='return AideSelect(this);'>
<option value=''></option>
<option value='1'>A</option>
<option value='2'>AB</option>
<option value='20'>BA</option>
<option value='3'>BE</option>
<option value='4'>BER</option>
<option value='5'>BI</option>
<script>
function AideSelect(objSelect) {
if (objSelect.strBuffer==undefined) {objSelect.setAttribute('strBuffer','',1);}
objSelect.strBuffer+=String.fromCharCode(window.event.keyCode);
var result= new RechercheItem(objSelect) // on cherche des items correspondants
if (!result.qqChose) {//rien trouvé de mieux
objSelect.strBuffer=String.fromCharCode(window.event.keyCode); //on repart avec la dernière touche et on recommence
result= new RechercheItem(objSelect)
if (result.qqChose) {objSelect.selectedIndex = result.gotoIndex;}
} else {
objSelect.selectedIndex = result.gotoIndex
}
return false;
}
function RechercheItem(objSelect) {
this.gotoIndex = objSelect.selectedIndex;
this.qqChose= false;
for ( var cpt = 0; cpt < objSelect.options.length; cpt++ ) {
if ( objSelect.options[cpt].text.toLowerCase().indexOf(objSelect.strBuffer.toLowerCase()) == 0 ) {
this.gotoIndex = cpt;
this.qqChose=true;
break;
}
}
}
</script>
avez vous d'autres technique à base de select?
Modifié par CanardWc (07 Mar 2006 - 16:04)