【发布时间】:2010-11-21 19:35:03
【问题描述】:
我想捕获 TAB 按键,取消默认操作并调用我自己的 javascript 函数。
【问题讨论】:
标签: javascript jquery
我想捕获 TAB 按键,取消默认操作并调用我自己的 javascript 函数。
【问题讨论】:
标签: javascript jquery
编辑: 由于您的元素是动态插入的,因此您必须在示例中使用 delegated on(),但您应该将其绑定到 keydown 事件,因为作为 @Marc cmets,在 IE 中keypress 事件不捕获非字符键:
$("#parentOfTextbox").on('keydown', '#textbox', function(e) {
var keyCode = e.keyCode || e.which;
if (keyCode == 9) {
e.preventDefault();
// call custom function here
}
});
查看示例here。
【讨论】:
jQuery 1.9 中的工作示例:
$('body').on('keydown', '#textbox', function(e) {
if (e.which == 9) {
e.preventDefault();
// do your code
}
});
【讨论】:
e.preventDefault(); 加倍以防止在文本框中插入空格。
$('#textbox').live('keypress', function(e) {
if (e.keyCode === 9) {
e.preventDefault();
// do work
}
});
【讨论】:
上面显示的方法对我不起作用,可能是我使用有点旧的 jquery,最后下面显示的代码 sn-p 适用于 - 发布以防万一有人在我的同一位置
$('#textBox').live('keydown', function(e) {
if (e.keyCode == 9) {
e.preventDefault();
alert('tab');
}
});
【讨论】:
在标签上使用向下键的一个重要部分是知道标签总是会尝试做某事,不要忘记在最后“返回 false”。
这就是我所做的。我有一个在 .blur 上运行的函数和一个交换表单焦点位置的函数。基本上,它会在表单末尾添加一个输入,然后在运行模糊计算时到那里。
$(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");
}
}
});
【讨论】:
试试这个:
$('#contra').focusout(function (){
$('#btnPassword').focus();
});
【讨论】:
假设您有 Id 为 txtName 的 TextBox
$("[id*=txtName]").on('keydown', function(e) {
var keyCode = e.keyCode || e.which;
if (keyCode == 9) {
e.preventDefault();
alert('Tab Pressed');
}
});
【讨论】:
您可以使用this JQuery API 捕获事件选项卡。
$( "#yourInputTextId" ).keydown(function(evt) {
if(evt.key === "Tab")
//call your function
});
【讨论】:
这对我有用:
$("[id*=txtName]").on('keydown', function(e) { var keyCode = e.keyCode || e.which; if (keyCode == 9) { e.preventDefault(); alert('Tab Pressed'); } });
【讨论】: