È necessario filtrare i codici chiave freccia (37,38,39,40), prova questo:
Nota il function(e)
al posto di function()
- questo consente di afferrare l'evento e quindi il codice chiave.
$('#search-form .search-terms').on('keydown', function(e){
// get keycode of current keypress event
var code = (e.keyCode || e.which);
// do nothing if it's an arrow key
if(code == 37 || code == 38 || code == 39 || code == 40) {
return;
}
// do normal behaviour for any other key
$('#search-items #autocom').fadeIn();
});
Click for a list of key codes
Una nota dei documenti su keypress
/keyup
/keydown
:
noti che keydown e keyup fornire un codice che indica quale tasto viene premuto, mentre keypress indica quale personaggio è stato inserito. Ad esempio, una "a" minuscola verrà riportata come 65 da keydown e keyup, ma come 97 da keypress. Una "A" maiuscola viene riportata come 65 da tutti gli eventi. A causa di questa distinzione, quando si catturano combinazioni di tasti speciali come i tasti freccia, .keydown() o .keyup() è una scelta migliore.
Il keypress
evento lavora in quasi tutte le situazioni, ma è prudente utilizzare keyup
o keydown
perché alcuni browser (penso che una qualche versione precedente di Firefox) non rilevano alcuni tasti, come ad esempio tasti freccia, utilizzando l'evento keypress
.
Grazie mille per la risposta dettagliata, fiddle aggiornato: http://jsfiddle.net/UU6KG/1/ – Athanatos