Tôi biết rằng các câu hỏi tương tự đã được hỏi trước đây, nhưng hành vi tôi thấy hơi khác so với những gì tôi có thể tìm thấy trên SO .preventDefault() khi một phím tab được nhấp vào bên trong văn bản trong Chrome
Tôi có một biểu mẫu mà tôi đang chia thành nhiều tab accordion jquery. Tôi muốn người dùng có thể điền vào một trường văn bản trong tab 1 và sau đó nhấn phím tab để tự động mở tab 2 và đặt trọng tâm vào trường văn bản trong tab đó. Sự cố tôi đang gặp đang ngăn chặn hành vi khóa tab mặc định trong Chrome.
$("form#new_story").keydown(function (e) {
if(!e) var e = window.event;
var keyCode = e.keyCode || e.which;
if (keyCode == 9) {
e.preventDefault();
alert("tab was keyed");
}
});
Tôi đã thử nghiệm điều này trong Chrome, FF và Safari. Hoạt động tốt trong FF và Safari, nhưng khi người dùng đang sử dụng các phím Chrome xuống phím tab, một tab thực được nhập vào trường văn bản trước khi sự kiện kích hoạt. Tôi muốn dừng hành vi này, nhưng tab rõ ràng đang được nhập trước khi sự kiện thậm chí kích hoạt. Có cách nào để ngăn chặn điều này?
Tab được nhập * trước * sự kiện 'phím tắt '? Âm thanh khó xảy ra. Nhưng để ngăn chặn nó, bạn có thể móc vào 'nhấn phím 'và ngăn chặn điều đó. – Bergi
'nhấn phím 'không nắm bắt được thao tác nhấn tab (Tôi biết rằng' nhấn phím' không nắm bắt các phím noncharacter trong các phiên bản cũ hơn của ví dụ. Không biết rằng nó sẽ không nắm bắt các phím không phải ký tự trong Chrome. Đã chỉ tìm thấy vấn đề Đó là một sự tương tác rất hài hước giữa jquery accordion và jquery validate.Để gửi nó như là một câu trả lời dưới đây. –