У меня есть код jQuery, который создает массив фокусируемых элементов и связывает .keydown для стрелок влево и вправо, чтобы перемещаться по ним.В Chrome, IE и Safari, начиная с preventDefault()
или заканчивая возвратом false (что технически я не хочу использовать, потому что мне не нужно stopPropagation()
) предотвращает событие стрелок по умолчанию, но в Firefox этоне.
Как я могу также предотвратить действие по умолчанию в Firefox?
Вот код, который работает, как и ожидалось, за исключением Firefox, где событие по умолчанию запускается в дополнение к моему обратному вызову.
$(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();
}
});
});
});