Javascript 如何在onkeydown事件处理程序方法中区分大写字母和小写字母 试验 函数showChar(e){ 如果(例如keyCode!=16){ 警觉的( keyCode:“+e.keyCode+”\n +按下SHIFT键:“+e.shiftKey+”\n ); } }

Javascript 如何在onkeydown事件处理程序方法中区分大写字母和小写字母 试验 函数showChar(e){ 如果(例如keyCode!=16){ 警觉的( keyCode:“+e.keyCode+”\n +按下SHIFT键:“+e.shiftKey+”\n ); } },javascript,onkeydown,Javascript,Onkeydown,按住或不按住任意字符键 按下SHIFT键。 在onkeydown事件处理程序方法中,如何区分大写A和小写A?上述算法触发相同的keyCode值。我需要在按下onkeydown键时检测大写字母 注意:该代码包含SHIFT键的异常。否则,它不允许键入大写字母。顺便说一句,我需要使用onkeydown进行试用。在我看来,你回答了自己的问题。如果检测到SHIFT键,则可以轻松区分大小写: <html> <head> <title>Test</title>

按住或不按住任意字符键 按下SHIFT键。

在onkeydown事件处理程序方法中,如何区分大写A和小写A?上述算法触发相同的keyCode值。我需要在按下onkeydown键时检测大写字母


注意:该代码包含SHIFT键的异常。否则,它不允许键入大写字母。顺便说一句,我需要使用onkeydown进行试用。

在我看来,你回答了自己的问题。如果检测到SHIFT键,则可以轻松区分大小写:

<html>
<head>
<title>Test</title>

<script type="text/javascript">

function showChar(e) {
    if (e.keyCode != 16) {
        alert(
           "keyCode: " + e.keyCode + "\n"
          + "SHIFT key pressed: " + e.shiftKey + "\n"
        );
    }
}

</script>
</head>

<body onkeydown="showChar(event);">
<p>Press any character key, with or without holding down
 the SHIFT key.<br /></p>
</body>
</html>
还是我误解了你的问题

更新:通过添加32,大写ASCII码可以轻松转换为小写ASCII码,因此您只需执行以下操作:

if(e.shiftKey){
   alert("You pressed a CAPITAL letter with the code " + e.keyCode);
}else{
   alert("You pressed a LOWERCASE letter with the code " + e.keyCode);
}

试验
函数showChar(e){
如果(e.keyCode!=16){//如果按下的键不是SHIFT键

如果(e.keyCode>=65&&e.keyCode我在这个问题上做了相当多的搜索,因为我写的代码将输入元素(使用按键事件)限制为仅包含字母字符。我使用的是“字符代码介于65和90之间”,无法在字段中输入小写字母

我最终发现JavaScript使用ASCII码来实现这一点,所以我添加了“以及97和122之间的代码”和viola!我能够输入大写和小写字母。也就是说:

<html>
<head>
<title>Test</title>

<script type="text/javascript">

function showChar(e){
  if(e.keyCode!=16){ // If the pressed key is anything other than SHIFT
        c = String.fromCharCode(e.keyCode);
        if(e.shiftKey){ // If the SHIFT key is down, return the ASCII code for the capital letter
            alert("ASCII Code: "+e.keyCode+" Character: "+c);
        }else{ // If the SHIFT key is not down, convert to the ASCII code for the lowecase letter
            c = c.toLowerCase(c);
            alert("ASCII Code: "+c.charCodeAt(0)+" Character: "+c);
        }
  }
}

</script>
</head>

<body onkeydown="showChar(event);">
<p>Press any character key, with or without holding down
 the SHIFT key.<br /></p>
</body>
</html>
仅限字母功能(e){
"严格使用",;
如果(!e){//补偿IE的关键代码报告。
e=窗口事件;
}
var charCode=(e.which)?e.which:event.keyCode;

如果((charCode>=65&&charCode=97&&charCode更近、更干净:使用
event.key
。不再使用任意数字代码

function alphaOnly(e) {
    'use strict';
    if (!e) { // compensates for IE's key code reporting.
        e = window.event;
    }
    var charCode = (e.which) ? e.which : event.keyCode;
    if ((charCode >= 65 && charCode <= 90) || (charCode >= 97 && charCode <= 122)) {
        return true;
    } else {
        return false;
    }
}


但键码是否也应该更改?我需要将与键码或其他内容的差异作为一个值。在这两个示例中,键码是相同的。我寻求一种方法,为大写字母a和小写字母a提供不同的键码。请查看上面我的答案的更新。我想这就是您要寻找的。谢谢,这很好但我如何才能添加对UTF-8的支持呢?比如大写字母和小写字母抛出“ASCII码(非字母)”警报。是否有可能在onkeydown中将Unicode大写字母latters与小写字母区分开来。我添加了一些代码。我不知道这是否会起作用,但可能会起作用。keyCode是keyCode而不是字符代码的原因是keyCode是表示按下哪个键的keyCode。按键本身并没有说明字符将是大写字母、数字、标点符号或其他任何字符。此外,键本身并不表示CAPS LOCK是否处于活动状态,但如果CAPS LOCK处于活动状态,则Shift键位的存在将指示此代码正在执行的相反操作。CAPS LOCK呢?
function alphaOnly(e) {
    'use strict';
    if (!e) { // compensates for IE's key code reporting.
        e = window.event;
    }
    var charCode = (e.which) ? e.which : event.keyCode;
    if ((charCode >= 65 && charCode <= 90) || (charCode >= 97 && charCode <= 122)) {
        return true;
    } else {
        return false;
    }
}
node.addEventListener('keydown', function(event) {
    const key = event.key; // "a", "1", "Shift", etc.
    if (/^[a-z]$/i.test(key)) { // or if (key.length === 1 && /[a-z]/i.test(key))
        const isCapital = event.shiftKey;
    }
});