jQuery:按键 Backspace 不会触发?
我想知道我做错了什么:
$(".s").keypress(function(e) {
switch (e.keyCode) {
case 8: // Backspace
//console.log('backspace');
case 9: // Tab
case 13: // Enter
case 37: // Left
case 38: // Up
case 39: // Right
case 40: // Down
break;
default:
doSearch();
}
});
我希望当我按下 Backspace 键时,我的 doSearch()
函数也被触发。目前,当我在 Chrome 和 Safari 中按 Backspace 时,绝对没有任何反应。
有什么想法吗?
I wonder what I'm doing wrong:
$(".s").keypress(function(e) {
switch (e.keyCode) {
case 8: // Backspace
//console.log('backspace');
case 9: // Tab
case 13: // Enter
case 37: // Left
case 38: // Up
case 39: // Right
case 40: // Down
break;
default:
doSearch();
}
});
I want my doSearch()
function also to be fired when I hit the Backspace key. At the moment absolutely nothing happens when I press Backspace in Chrome and Safari.
any ideas?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
使用
keyup
而不是keypress
。当用户按下某物时,这会获取所有键代码Use
keyup
instead ofkeypress
. This gets all the key codes when the user presses something我自己也遇到过这个。我使用了
.on
所以它看起来有点不同,但我这样做了:在此处添加我的工作。我需要删除用户输入的 ssn 所以我在 jQuery 中这样做了
I came across this myself. I used
.on
so it looks a bit different but I did this:Adding my Work Around here. I needed to delete ssn typed by user so i did this in jQuery
如果您只想在输入更改时触发事件,请使用:
If you want to fire the event only on changes of your input use:
根据 .keypress() 的 jQuery 文档,它不会捕获不可打印的字符,因此退格键在按键时不起作用,但它会在 keydown 和 keyup 中捕获:
在某些情况下不需要 keyup或有其他不良效果,而 keydown 就足够了,因此处理此问题的一种方法是使用
keydown
捕获所有击键,然后设置一个短间隔的超时,以便输入密钥,然后在中进行处理之后。According to the jQuery documentation for .keypress(), it does not catch non-printable characters, so backspace will not work on keypress, but it is caught in keydown and keyup:
In some instances keyup isn't desired or has other undesirable effects and keydown is sufficient, so one way to handle this is to use
keydown
to catch all keystrokes then set a timeout of a short interval so that the key is entered, then do processing in there after.