仅在密钥是字母或数字时才对密钥进行警报

Omu*_*Omu 11 javascript jquery

我想在keyup事件中显示警报,但仅在密钥是字母或数字时才显示,而不是移位,标签等.

<input type='text' id='hi />
Run Code Online (Sandbox Code Playgroud)

或者除了tab,shift,ctrl,enter之外的任何键

谁知道怎么样?

The*_*her 33

您必须将"keyup"事件附加到文本框并在事件内部检查所需的密钥代码:

$("#hi").bind("keyup", function(e) {
       //on letter number
       if (e.which <= 90 && e.which >= 48)
       {
          alert('hello');
       }
});
Run Code Online (Sandbox Code Playgroud)

  • 这仅适用于英文字母,每种语言都有额外的范围... http://jrgraphix.net/research/unicode_blocks.php (2认同)

Tim*_*own 12

如果要检查键入的字符,keyup则是错误的事件.只有keypress事件可以可靠地告诉您有关键入的字符的任何信息.你可以这样做:

$("#hi").keypress(function(e) {
    var charTyped = String.fromCharCode(e.which);
    if (/[a-z\d]/i.test(charTyped)) {
        alert("Letter or number typed: " + charTyped);
    }
});
Run Code Online (Sandbox Code Playgroud)

  • @Kumar:因为“ keyup”和“ keydown”与按下哪个物理键有关,而“ keypress”与按键所产生的文本输入有关。 (2认同)

zfr*_*sch 5

此附加代码说明了数字键盘中的数字、字符和数字:

 document.querySelector(selector).addEventListener('keypress', function() {
   if (e.which <= 90 && e.which >= 48 || e.which >= 96 && e.which <= 105) {
     alert('keycode ' + e.which + '  triggered this event');
     //do whatever
   }
 });
Run Code Online (Sandbox Code Playgroud)