所以,如果按下Tab键,我在运行脚本时遇到一些麻烦.经过一些快速的谷歌搜索后,Tab的charcode是9.另外,在我们谈话的时候,有没有更好的方法来检查是否按下键而不使用charcodes?我问,因为我在使用charcode时不断地通过firebug获得以下警告:
不应使用keyup事件的'charCode'属性.价值毫无意义.
无论如何,它仍然有效,所以这不是问题.这是我使用的代码:
$('/* my inputs */').keyup(function(e) {
console.log('keyup called');
var code = e.keyCode || e.which;
if (code == '9') {
console.log('Tab pressed');
}
});
Run Code Online (Sandbox Code Playgroud)
使用上面的代码,控制台留空,没有添加任何内容(使用Firebug).当然我已经尝试过实际做东西而不是记录文本,但没有任何执行.所以任何人都可以看到为什么这不起作用?有没有更好的方法来检查按键是否被按下?
提前致谢.
Chr*_*add 74
我的预感是,当你按下tab键时,你的表单的输入会在键盘发生之前失去焦点.尝试更改绑定到正文,如下所示:
$('body').keyup(function(e) {
console.log('keyup called');
var code = e.keyCode || e.which;
if (code == '9') {
alert('Tab pressed');
}
});
Run Code Online (Sandbox Code Playgroud)
然后,如果有效(对我来说),请尝试将绑定更改为keyDown,然后返回false.这样您就可以实现自己的自定义行为.
$('.yourSelector').keydown(function(e) {
console.log('keyup called');
var code = e.keyCode || e.which;
if (code == '9') {
alert('Tab pressed');
return false;
}
});
Run Code Online (Sandbox Code Playgroud)
这两个中的一个应该工作...如果是它的身体,你可以在身体上附加一个keydown处理程序,然后如果它是tab,找到有焦点的字段(我认为有函数.hasFocus()?),如果是你的那个想要,继续并返回false.否则,让浏览器做它的事情.
如果您想使用制表符更新字段,请在回调中尝试:
var theVal = $(this).val();
theVal = theVal + ' ';
$(this).val(theVal);
Run Code Online (Sandbox Code Playgroud)
没有测试过,但它应该工作.如果它给你带来麻烦,你也可以附加3或4个空格而不是制表符.
归档时间: |
|
查看次数: |
67646 次 |
最近记录: |