Jquery 在Javascript中,如何在keydown&;中检测字符大小写(上/下);关键事件?
我需要在事件keydown和keydup中检测字符的大小写Jquery 在Javascript中,如何在keydown&;中检测字符大小写(上/下);关键事件?,jquery,case-sensitive,keydown,keyup,Jquery,Case Sensitive,Keydown,Keyup,我需要在事件keydown和keydup中检测字符的大小写 $('body').keydown( function(event) { var charCode = (event.which) ? event.which : event.keyCode; var char = String.fromCharCode(charCode); console.log(char + " is down pressed"); } ); $('
$('body').keydown(
function(event) {
var charCode = (event.which) ? event.which : event.keyCode;
var char = String.fromCharCode(charCode);
console.log(char + " is down pressed");
}
);
$('body').keyup(
function(event) {
var charCode = (event.which) ? event.which : event.keyCode;
var char = String.fromCharCode(charCode);
console.log(char + " is up pressed");
}
);
你可以在这里试试:
它总是返回大写字母,即使没有按下caps lock
在这两个事件中,如何检测大写或小写字母?如果字符在转换为大写后仍然相同,则以大写开头:
if (fromCharCode(e.which).toUpperCase() == fromCharCode(e.which))
由于jQuery规范化了e.which
,并且keypress
事件的工作方式有点不同,因此我将执行以下操作:
$('body').on({
keypress: function(e) {
var char = String.fromCharCode(e.which),
isUpper = char == char.toUpperCase();
console.log(char + ' is pressed' + (isUpper ? ' and uppercase' : ''))
}
});
keyup
和keydown
无法检测大小写。
只有
按键
可以这样做 使用event.key
和现代JS!
再也没有数字代码了。你可以直接检查钥匙。例如,“输入”
,“左箭头”
,“r”
,或“r”
<代码>“按键”、“向下键”
、或“向上键”
都可以工作
document.addEventListener("keypress", function (event) {
const key = event.key;
const keyLower = key.toLowerCase();
// Check it is a char between A-Z, not numbers, etc.
if (key.length !== 1 || keyLower < "a" || keyLower > "z") {
return;
}
// Check for case
const isUpperCase = (key !== keyLower);
});
您的第一个代码没有帮助,因为e已经是大写的,所以布尔表达式总是解析为true。您的第二个代码使用keypress而不是keydown,这对keydup毫无帮助。@AshrafBashir-这是因为keydup和keydown没有区分字符是大写还是小写,它会返回相同的代码,所以使用这些事件无法知道字符是大写还是小写。你可以听shift键,但这也不能保证。当问问题的人在几个月后发布自己的答案,说完全相同的话,然后接受答案,这总是很好的!您可以检测是否按下shift键,这是一个错误。但不是caps lock:(对于infor,按键现在是:(
const key = event.key;
const isLowerCaseLetter = (/[a-z]/.test(key));
const isUpperCaseLetter = (/[A-Z]/.test(key));