jQuery:TAB键的键入?

所以,我遇到一些麻烦让我的脚本运行如果Tab键被按下。 一些快速search后,Tab的charcode是9.另外,当我们在说话,有没有更好的方法来检查是否按下键而不使用charcode? 我问,因为我不断收到以下警告由萤火虫使用charcode时:

不能使用keyup事件的“charCode”属性。 价值是没有意义的。

无论如何,它仍然有效,所以这不是问题。 这是我使用的代码:

$('/* my inputs */').keyup(function(e) { console.log('keyup called'); var code = e.keyCode || e.which; if (code == '9') { console.log('Tab pressed'); } }); 

使用上面的代码控制台留空,没有任何东西被添加(使用Firebug)。 当然,我已经尝试过,而不是logging文本,但没有执行。 所以任何人都可以看到为什么这不起作用? 有没有更好的方法检查一个键是否被按下?

提前致谢。

我的预感是,当你按下Tab键时,表单的input失去焦点,在键入之前发生。 尝试更改绑定到身体,如下所示:

  $('body').keyup(function(e) { console.log('keyup called'); var code = e.keyCode || e.which; if (code == '9') { alert('Tab pressed'); } }); 

然后,如果这样做(它对我来说)尝试改变绑定到keyDown,而不是,并返回false。 这样你可以实现自己的自定义行为。

 $('.yourSelector').keydown(function(e) { console.log('keyup called'); var code = e.keyCode || e.which; if (code == '9') { alert('Tab pressed'); return false; } }); 

其中一个应该工作…如果它是身体,你可以附加一个keydown处理程序的身体,然后如果它的标签,find焦点领域(我认为有函数.hasFocus()?),如果这是你想要继续并返回false。 否则,让浏览器做它的事情。

如果您想用制表符更新字段,请在callback中尝试以下操作:

 var theVal = $(this).val(); theVal = theVal + ' '; $(this).val(theVal); 

没有testing过,但它应该工作。 如果它给你带来麻烦,你也可以附加3或4个空格而不是制表符。

 e = e || window.event; if(e.keyCode == 9) alert("Tab pressed"); 

尝试这个

如果没有什么事情发生,不pipe你按什么键,也许你正在使用的select器有什么问题? 你能证实你正在select正确的,可能是这样的:

 console.log($('/* my inputs */').length);