Na své webové stránce mám velké množství rozbalovacích polí. Jedno z těchto rozevíracích polí se používá pro jednu vybranou hodnotu ze seznamu možností.
<SELECT id="Box0" name=""> <OPTION value="1920">my weird description</OPTION> <OPTION value="1225">other weird description</OPTION> <OPTION value="3112">some name dynamically fetched</OPTION> </SELECT>
Jak mohu přidat událost do této sekce, takže když je zaostřená, mohl bych k výběru možnosti použít numerické klávesy jako 1,2.. místo použití myši nebo kláves se šipkami pro výběr možnosti? Pro upřesnění:pokud stisknu 1 na mé klávesnici by se vybraná hodnota stala první hodnotou z tohoto seznamu s 2 vybraná hodnota se stane druhou hodnotou z tohoto seznamu.
Rozhodl jsem se nepoužívat knihovnu/rámec, jako je JQuery/Mootools.
Odpověď
Myslím, že to může vyřešit váš problém
<html> <head> <script type="text/javascript"> function selectvalue(e){ e = e || event; var key = e.which || e.keyCode; if(!e.shiftKey && key >= 48 && key <= 57){ var option = this.options[key - 48]; if(option){ option.selected = "selected"; } } } </script> </head> <body> <SELECT id="Box0" name="" onkeypress="selectvalue.apply(this, arguments)"> <OPTION value="1920">my weird description</OPTION> <OPTION value="1225">other weird description</OPTION> <OPTION value="3112">some name dynamically fetched</OPTION> </SELECT> </body> </html>
Javascript vypadá trochu chaoticky, protože musí zvládnout IE a všechny ostatní prohlížeče.
IE nepředá objekt události do funkce handleru, místo toho musíme použít objekt globální události.
Stejným způsobem je kód klíče také uložen v keyCode
místo which
v IE.