我试图捕获我的JQuery应用程序的所有关键事件。当使用事件时,我可以获得输入和选项卡事件,但所有字母均为大写。所以,我试图切换到keypress
,我听说是较低的大写字母。这工作,除了它不会捕获进入和标签事件了。有两全其美吗?我如何可以捕获所有事件,区分大小写包括像输入键,Tab键,Shift,Alt等JQuery按键与keydown事件捕获所有键码
回答
在按键按下事件,与事件调用此方法作为参数,并添加这一行,
e.preventDefault()
这将暂停操作。
谢谢,
这不回答我的问题。也许重读它? –
为按键和按键事件调用此函数。 –
如何做到这一点?
$(window).on('keydown keypress', function(e) {
e.preventDefault();
var code = e.keyCode || e.which;
console.log(code);
});
什么这在理论上应该做的是防止其他事件被解雇,而是因为我们呼吁双方的keydown和按键,其中一人肯定会被解雇。现在这可能会对代码的其余部分产生负面影响,所以请谨慎使用它。
我决定做'.on('keydown keypress',函数(e){...}'然后在函数中检查它是哪个事件,如果它是'keydown'事件, ,删除,选项卡等,如果它是一个'keypress'事件,我处理字母。 –
希望我提供一些见解... –
希望这有助于你正在尝试做
$(document.body).on('keypress', function(e) {
var keycode = e.keyCode;
var valid =
(keycode > 47 && keycode < 58) || // number keys
keycode == 32 || keycode == 13 || // spacebar & return key(s) (if you want to allow carriage returns)
(keycode > 64 && keycode < 91) || // letter keys
(keycode > 95 && keycode < 112) || // numpad keys
(keycode > 185 && keycode < 193) || // ;=,-./` (in order)
(keycode > 218 && keycode < 223); // [\]' (in order)
if (valid) {
console.log(keycode + ' keypress'); //printable char on keypress
}
});
$(document.body).on('keyup', function(e) {
var keycode = e.keyCode;
var valid =
(keycode > 47 && keycode < 58) || // number keys
keycode == 32 || keycode == 13 || // spacebar & return key(s) (if you want to allow carriage returns)
(keycode > 64 && keycode < 91) || // letter keys
(keycode > 95 && keycode < 112) || // numpad keys
(keycode > 185 && keycode < 193) || // ;=,-./` (in order)
(keycode > 218 && keycode < 223); // [\]' (in order)
if (!valid) {
console.log(keycode + ' keyup'); //non printable char on keyup
}
});
有可见字符验证从这个SO link
我得到了一个工作解决方案,但感谢您的答案。 –
$(".num").keypress(function (e) {
console.log('[keypress] key' + e.key + ' keyCode' + e.keyCode + ' which' + e.which);
var kc = e.keyCode || e.which;
if (kc < 48 || kc > 57)/* number keys*/ {
//$.alertme('no');
if (e.preventDefault) {
e.preventDefault();
console.log('[keypress] preventDefault');
} else {
e.returnValue = false;
console.log('[keypress] returnValue');
}
}
//$.alertme('ok');
//var re = /[0-9]/.test(e.key);//not working android browser
//if (!re) {
// if (e.preventDefault) {
// e.preventDefault();
// } else {
// e.returnValue = false;
// }
//}
});
检查仅数 添加NUM类输入文字
这不是他的问题的答案,他问的东西绝对不同。 – shaggy
- 1. Keydown事件捕获数字键
- 2. keydown事件上的键码
- 3. Keydown事件:如何捕捉关键行?
- 4. 捕获“shift + tab”按键事件
- 5. WPF子类捕获按键事件
- 6. MVC Html.BeginForm捕获按键事件
- 7. 在VB.NET中捕获按键事件
- 8. 未捕获触发的按键事件?
- 9. 捕获按键事件使用xlib
- 10. ToolStripMenuItem及按键或KeyDown事件
- 11. F5和叔KEYDOWN /按键键码
- 12. 捕获单键输入事件Jquery
- 13. 按键事件阻止所有键盘按键
- 14. 捕获光标键的KeyDown和KeyUp事件
- 15. jQuery的变化()事件 - 不能与绑定(),生活(),KEYUP +的keydown +按键,没有
- 16. Griffon捕获关键事件
- 17. 捕获Android软键事件
- 18. iphone键盘keydown/keyup事件?
- 19. KeyDown事件上的PrintScreen键
- 20. 键盘按键捕获
- 21. 未捕获PyGame KEYDOWN事件
- 22. 捕获keydown事件iframe
- 23. 无法捕捉按Ctrl + Alt +箭头键事件的jQuery热键
- 24. 网格“的keydown”事件没有赶上特殊键,如箭头键或与“<strong>的keydown</strong>”事件捕捉特殊键Enter或Tab
- 25. Jquery keypress()事件不捕获Tab键代码
- 26. 星火按钮俘获的keydown(空格键)事件
- 27. C#捕获按Ctrl + PageUp键按键
- 28. Jquery按键事件忽略箭头键
- 29. 使用VB.Net捕获所有键盘事件
- 30. 删除所有按下的keydown事件
'。 on('keypress,keydown'.....'可能是? – Gogol
但是不会调用两个事件?如何区分为每个事件生成的代码?例如,如果按下了一个字母键,我想要'keypress'事件中的字符代码,如果它是非字母键,我需要'keydown'事件中的代码。 –
不可以在按键中捕捉输入和制表符。 –