我如何通过键事件代码知道刚刚输入 <textarea> 的字符是小写还是大写?

How do I know, via key event code, if the character just entered in a <textarea> is lower or upper case?

我正在尝试捕捉刚刚输入到 .但是我只能通过keydown或keyup之类的按键事件知道按下了哪个键,不知道是小写还是大写。

比如我输入A或a时,keydown的事件键码都是65。 我想到了使用 val() 来获取其中的字符串并获取它的最后一个字符。但这太慢而且占用内存,因为我想在用户键入时记录每个键盘事件。

有没有办法简单地获取最后输入的字符?提前致谢!

试试这个:

var p = $('#log')[0];

$("#textarea").on("keypress", function(e) {
  p.textContent = '';
  var k = e.keyCode || e.which;
  var character = String.fromCharCode(k);
  if (!isNaN(character * 1)) {
    p.textContent += 'character is numeric';
  } else {
    if (character == character.toUpperCase()) {
      p.textContent += 'UPPER case true';
    }
    if (character == character.toLowerCase()) {
      p.textContent += 'lower case true';
    }
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<textarea id="textarea"></textarea>
<p id="log"></p>

我明白你说的 shiftKey 是什么意思了

var myObj = $('#myTextarea');

function isLetter(char){
  if ((char.toLowerCase() !== char) || (char.toUpperCase() !== char)) {
    return true;
  } 
  return;
}

myObj.keypress(function( event ){
  var text = myObj.val();
  var char = text.charAt(text.length-1);
  if (!event.shiftKey && isLetter(char)) {
    if (char == char.toUpperCase()) {
      console.log('Upper');
    }
    if (char == char.toLowerCase()) {
      console.log('Lower');
    }
  }
});

尝试:

<textarea id="area1"></textarea>

window.onload = function () {
    document.getElementById("area1").onkeypress = function(event){

        var code = event.which;

        if ((code >= 65) && (code <= 90)) {
            alert('Upper');
        }
        else if ((code >= 97) && (code <= 122)) {
            alert('Lower');
        }           

    }
}