Jquery过滤器文本框(防止用户插入某些字符)

时间:2009-06-15 07:44:05

标签: jquery

我试图阻止用户在文本框中键入某些字符,这是我到目前为止的代码:

$().ready(function() {
  $(".textbox").keypress(function(event) {
     var keyVal = event.keyCode;

     if ((keyVal > 48 && keyVal < 57)) {  // Numbers
       return false;
     }
  });
});

它正在进入事件和条件,但仍然插入了角色。关于我如何处理的任何想法?

3 个答案:

答案 0 :(得分:2)

您的keyVal分配并未考虑所有浏览器。这段代码适用于Firefox,IE7,Safari,Chrome,并且不允许您在字段中键入数字,使用普通文本输入元素进行测试:

$().ready(function(){
  $(".textbox").keypress(function(event){
    var keyVal = (event.charCode ? event.charCode : ((event.keyCode) ? event.keyCode : event.which));
      if((keyVal > 48 && keyVal < 57))// Numbers
      {
         return false;
      }
    });
});

答案 1 :(得分:0)

当我不得不做这样的事情时,我使用了事件onkeyup

不是自动剥离字符(可能导致用户混淆),为什么不使用正则表达式来检查密钥上的有效字符,然后可能会向输入显示旁注,例如“您可能无法在此字段中输入数字”,或者某些更具体的输入字段,“您的城市名称可能不包含数字。”。

答案 2 :(得分:0)

你必须包括keyVal = 48和keyVal = 57,否则你将分别允许0和9。最终代码如下所示:

$().ready(function(){
    $(".textbox").keypress(function(event){
        var keyVal =  (event.charCode || event.keyCode || event.which);
        if((keyVal >= 48 && keyVal <= 57))// Numbers
        {
            return false;
        }
    });
});

使用||也更清晰德文建议的运营商。