Mam kod jQuery, który tworzy tablicę elementów, które można aktywować i wiąże .keydown dla lewej i prawej strzałki, aby przechodzić między nimi. W Chrome, IE i Safari począwszy od preventDefault()
lub kończącym się zwrotem false (którego technicznie nie chcę używać, ponieważ nie mam potrzeby, aby stopPropagation()
) zapobiega domyślnemu zdarzeniu strzałek, ale w Firefoksie tak nie jest.Zapobiegaj domyślnemu zdarzeniu jQuery keydown w przeglądarce Firefox
Jak mogę zapobiec domyślnej akcji w Firefoksie?
Oto kod, który działa zgodnie z oczekiwaniami, z wyjątkiem Firefoksa, w którym oprócz wywołania zwrotnego wywoływane jest domyślne zdarzenie.
$(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();
}
});
});
});
To nie działa dla mnie. Być może powodem działania tego kodu jest to, że jesteś za pomocą wejściowych pól tekstowych, w których głównie poruszam się po rozwijanych polach.Po przejściu do następnego pola rozwijanego wartość nowo wyostrzonej listy zmienia się do następnej wartości – Brandon
Widzę, gdy jsfiddle powraca online Będę musiał spojrzeć – roberkules
Dodałem mój kod w OP. – Brandon