Tôi muốn chụp phím TAB, hủy hành động mặc định và gọi chức năng javascript của riêng tôi.
Tôi muốn chụp phím TAB, hủy hành động mặc định và gọi chức năng javascript của riêng tôi.
Câu trả lời:
Chỉnh sửa: Vì phần tử của bạn được chèn động, bạn phải sử dụng ủy quyềnon()
như trong ví dụ của mình, nhưng bạn nên liên kết nó với sự kiện nhấn phím, vì như @Marc nhận xét, trong IE, sự kiện nhấn phím không chụp các phím không có ký tự:
$("#parentOfTextbox").on('keydown', '#textbox', function(e) {
var keyCode = e.keyCode || e.which;
if (keyCode == 9) {
e.preventDefault();
// call custom function here
}
});
Kiểm tra một ví dụ ở đây .
Ví dụ hoạt động trong jQuery 1.9:
$('body').on('keydown', '#textbox', function(e) {
if (e.which == 9) {
e.preventDefault();
// do your code
}
});
e.preventDefault();
gấp đôi để ngăn chèn khoảng trắng vào hộp văn bản.
$('#textbox').live('keypress', function(e) {
if (e.keyCode === 9) {
e.preventDefault();
// do work
}
});
Các phương thức được hiển thị ở trên không hoạt động với tôi, có thể tôi đang sử dụng jquery bit cũ, sau đó cuối cùng đoạn mã được hiển thị bên dưới hoạt động cho - đăng chỉ trong trường hợp ai đó ở cùng vị trí của tôi
$('#textBox').live('keydown', function(e) {
if (e.keyCode == 9) {
e.preventDefault();
alert('tab');
}
});
Một phần quan trọng của việc sử dụng phím trên tab là biết rằng tab sẽ luôn cố gắng thực hiện điều gì đó, đừng quên "trả lại sai" ở cuối.
Đây là những gì tôi đã làm. Tôi có một chức năng chạy trên .blur và một chức năng hoán đổi nơi tập trung biểu mẫu của tôi. Về cơ bản, nó thêm một đầu vào vào cuối biểu mẫu và đến đó trong khi chạy các phép tính trên mờ.
$(this).children('input[type=text]').blur(timeEntered).keydown(function (e) {
var code = e.keyCode || e.which;
if (code == "9") {
window.tabPressed = true;
// Here is the external function you want to call, let your external
// function handle all your custom code, then return false to
// prevent the tab button from doing whatever it would naturally do.
focusShift($(this));
return false;
} else {
window.tabPressed = false;
}
// This is the code i want to execute, it might be different than yours
function focusShift(trigger) {
var focalPoint = false;
if (tabPressed == true) {
console.log($(trigger).parents("td").next("td"));
focalPoint = $(trigger).parents("td").next("td");
}
if (focalPoint) {
$(focalPoint).trigger("click");
}
}
});
Bạn có thể chụp một tab sự kiện bằng API JQuery này .
$( "#yourInputTextId" ).keydown(function(evt) {
if(evt.key === "Tab")
//call your function
});
Điều này làm việc cho tôi:
$("[id*=txtName]").on('keydown', function(e) { var keyCode = e.keyCode || e.which; if (keyCode == 9) { e.preventDefault(); alert('Tab Pressed'); } });