我正在尝试捕获我的JQuery应用程序的所有关键事件。使用<a>
事件时,我可以获取enter和tab事件,但所有字母都是大写的。所以,我尝试切换到keydown
我听说是低+大写字母。这有效,除了它不再捕获enter和tab事件。这两个世界都是最好的吗?如何捕获所有事件,区分大小写,包括输入,制表符,移位,alt等键。
答案 0 :(得分:0)
在按键事件中,使用event作为参数调用方法并添加此行
e.preventDefault()
这会暂停行动。
谢谢,
答案 1 :(得分:0)
这样做怎么样?
$(window).on('keydown keypress', function(e) {
e.preventDefault();
var code = e.keyCode || e.which;
console.log(code);
});
理论上应该做的是防止其他事件被解雇,但因为我们同时调用keydown和keypress,其中一个肯定会被解雇。现在这会对您的其余代码产生负面影响,因此请谨慎使用。
答案 2 :(得分:0)
希望这有助于您尝试做什么
$(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
获得可见字符验证答案 3 :(得分:-1)
$(".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 class添加到输入文本