Jquery 在Javascript中,如何在keydown&;中检测字符大小写(上/下);关键事件?

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"); } ); $('

我需要在事件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').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));