Ho il codice jQuery che crea una serie di elementi focalizzabili e associa .keydown per le frecce sinistra e destra per sfogliarli. In Chrome, IE e Safari che iniziano con preventDefault()
o terminano con un falso return (che tecnicamente non desidero utilizzare perché non ho bisogno di stopPropagation()
) impedisce l'evento predefinito delle frecce, ma in Firefox no.Previene l'evento di default per il keydown jQuery in Firefox
Come è possibile impedire l'azione predefinita anche in Firefox?
Ecco il codice, che funziona come previsto, tranne in Firefox, in cui viene attivato l'evento predefinito oltre alla mia richiamata.
$(function() {
var focusables = $(":focusable");
focusables.eq(0).focus();
focusables.eq(0).select();
focusables.each(function() {
$(this).keydown(function (e) {
if (e.which == '37') { // left-arrow
e.preventDefault();
var current = focusables.index(this),
next = focusables.eq(current - 1).length ? focusables.eq(current - 1) : focusables.eq(0);
next.focus();
next.select();
}
if (e.which == '39') { // right-arrow
e.preventDefault();
var current = focusables.index(this),
next = focusables.eq(current + 1).length ? focusables.eq(current + 1) : focusables.eq(0);
next.focus();
next.select();
}
});
});
});
Questo non funziona per me Forse il motivo per cui questo funziona per il tuo codice è perché sei utilizzando le caselle di testo di input, mentre sto navigando principalmente nelle caselle di riepilogo verso il basso.Quando si passa alla casella a discesa successiva, il valore dell'elenco appena attivato si modifica al valore successivo. – Brandon
Vedo, una volta che jsfiddle è tornato online Dare un'occhiata – roberkules
Ho aggiunto il mio codice nell'OP – Brandon