Tôi có mã jQuery tạo một mảng các phần tử có thể đặt tiêu điểm và liên kết .keydown cho các mũi tên trái và phải để duyệt qua chúng. Trong Chrome, IE và Safari bắt đầu với preventDefault()
hoặc kết thúc bằng một sai lầm trở lại (mà về mặt kỹ thuật tôi không muốn sử dụng vì tôi không có nhu cầu stopPropagation()
) ngăn chặn các sự kiện mặc định của các mũi tên, nhưng trong Firefox nó không.Ngăn sự kiện mặc định cho khóa phím jQuery trong Firefox
Làm thế nào tôi có thể ngăn chặn hành động mặc định trong Firefox không?
Đây là mã, hoạt động như mong đợi, ngoại trừ trong Firefox, nơi sự kiện mặc định kích hoạt ngoài cuộc gọi lại của tôi.
$(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();
}
});
});
});
này không làm việc cho tôi. Có lẽ vì lý do đó này đang làm việc cho mã của bạn là bởi vì bạn là sử dụng các hộp văn bản đầu vào, trong khi đó tôi chủ yếu hướng hộp thả xuống. Khi tôi tìm đến tiếp theo hộp thả xuống, giá trị của những thay đổi danh sách mới tập trung-on với giá trị tiếp theo. – Brandon
tôi nhìn thấy, một khi jsfiddle đã trở lại trực tuyến, tôi sẽ có một cái nhìn. – roberkules
tôi đã thêm mã của tôi trong OP. – Brandon