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

时间:2011-03-11 09:27:02

标签: javascript jquery

我想在keyup事件中显示警告,但前提是密钥是字母或数字,而不是转移,标签等。

<input type='text' id='hi />

或除tab,shift,ctrl之外的任何键,输入

有谁知道怎么做?

7 个答案:

答案 0 :(得分:33)

您必须将“keyup”事件附加到文本框并在事件检查中附加所需的keycodes

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

答案 1 :(得分: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);
    }
});

答案 2 :(得分:2)

此附加代码记录了小键盘中的数字,字符和数字:

 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
   }
 });

答案 3 :(得分:1)

<input id="textbox" type='text' id='hi />

$("#textbox").keypress(function (e){
    if (e.which <= 90 && e.which >= 48)
       {
          alert('Letter or number click');
       }
});

答案 4 :(得分:0)

<input type="text" id="hi" onkeypress="keyPress()" />

function keyPress(e){
  var key, x = e || window.event; key = (x.keyCode || x.which);
    if(key <= 90 && key  >= 48){
  alert("Key pressed");
   }
 }

答案 5 :(得分:0)

这就是onkeypress事件的作用,仅当您按下产生值的键时才会触发。 MDN Docs

答案 6 :(得分:0)

我从不喜欢验证键代码。我的方法是查看输入内容是否包含文本(任何字符),确认用户正在输入文本而没有其他字符。

$('#input').on('keyup', function() {
    var words = $(this).val();
    // if input is empty, remove the word count data and return
    if(!words.length) {
        $(this).removeData('wcount');
        return true;
    }
    // if word count data equals the count of the input, return
    if(typeof $(this).data('wcount') !== "undefined" && ($(this).data('wcount') == words.length)){
        return true;
    }
    // update or initialize the word count data
    $(this).data('wcount', words.length);
    console.log('user tiped ' + words);
    // do you stuff...
});
<html lang="en">
  <head>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
  </head>
  <body>
  <input type="text" name="input" id="input">
  </body>
</html>