mat*_*att 180 jquery keypress 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();
}
});
Run Code Online (Sandbox Code Playgroud)
doSearch()
当我按下Backspace键时,我希望我的功能也被触发.目前,当我Backspace在Chrome和Safari中按下时,绝对没有任何反应.
有任何想法吗?
Jon*_*ter 311
用keyup
而不是keypress
.当用户按下某些内容时,这将获得所有密钥代码
小智 31
我自己也遇到了这个.我使用.on
它看起来有点不同但我这样做:
$('#element').on('keypress', function() {
//code to be executed
}).on('keydown', function(e) {
if (e.keyCode==8)
$('element').trigger('keypress');
});
Run Code Online (Sandbox Code Playgroud)
在这里添加我的工作.我需要删除用户输入的ssn,所以我在jQuery中这样做了
$(this).bind("keydown", function (event) {
// Allow: backspace, delete
if (event.keyCode == 46 || event.keyCode == 8)
{
var tempField = $(this).attr('name');
var hiddenID = tempField.substr(tempField.indexOf('_') + 1);
$('#' + hiddenID).val('');
$(this).val('')
return;
} // Allow: tab, escape, and enter
else if (event.keyCode == 9 || event.keyCode == 27 || event.keyCode == 13 ||
// Allow: Ctrl+A
(event.keyCode == 65 && event.ctrlKey === true) ||
// Allow: home, end, left, right
(event.keyCode >= 35 && event.keyCode <= 39)) {
// let it happen, don't do anything
return;
}
else
{
// Ensure that it is a number and stop the keypress
if (event.shiftKey || (event.keyCode < 48 || event.keyCode > 57) && (event.keyCode < 96 || event.keyCode > 105))
{
event.preventDefault();
}
}
});
Run Code Online (Sandbox Code Playgroud)
如果您只想在输入使用的更改时触发事件:
$('.s').bind('input', function(){
console.log("search!");
doSearch();
});
Run Code Online (Sandbox Code Playgroud)
根据 .keypress() 的 jQuery 文档,它不会捕获不可打印的字符,因此退格键在按键时不起作用,但它会在 keydown 和 keyup 中捕获:
当浏览器注册键盘输入时,按键事件被发送到元素。这与 keydown 事件类似,只不过修饰键和非打印键(例如 Shift、Esc 和 delete)会触发 keydown 事件,但不会触发 keypress 事件。根据平台和浏览器的不同,两个事件之间可能会出现其他差异。(https://api.jquery.com/keypress/)
在某些情况下,不需要 keyup 或具有其他不良效果,而 keydown 就足够了,因此处理此问题的一种方法是使用keydown
捕获所有击键,然后设置一个短间隔的超时,以便输入密钥,然后在之后。
jQuery(el).keydown( function() {
var that = this; setTimeout( function(){
/** Code that processes backspace, etc. **/
}, 100 );
} );
Run Code Online (Sandbox Code Playgroud)