【问题标题】:Validation to check whether the textbox value is changed or not验证以检查文本框值是否已更改
【发布时间】:2015-01-09 04:22:31
【问题描述】:

我想要一个只允许字母数字字符、退格、删除、空格和特殊字符的验证,这些字符可以从 Kyeboard 更改文本框的值。我试过了

$('#profile_pstate').on('keypress',function(e1){
    var cntry_key = e1.which;
    if(cntry_key == 8 || cntry_key == 46 || cntry_key == 32 || (cntry_key >= 48 && cntry_key <= 57) || (cntry_key >= 65 && cntry_key <= 90)) {   
        // For Backspace, Delete, Space, Numbers and Alphabets
        alert('success');
    }
});

但是对于特殊字符,我该如何添加它们。如果我手动添加它们,它们不在像字母和数字这样的适当范围内。您能否建议我一种方法,甚至是一种正确的验证方法.

【问题讨论】:

  • "alphanumeric characters,backspace,delete,space and special characters" 这就是我们在键盘上的全部内容!
  • 想想用正则表达式
  • @Bharadwaj 按tab、shift、alt、功能键怎么样?我们需要跳过它们对吗?我只想接受alphanumeric characters,backspace,delete,space and special characters
  • @Gautam3164 如果要限制选项卡、shift 键,用户将如何将焦点移动到另一个输入控件?您是否要限制用户仅使用鼠标移动到另一个输入控件。同样,如果您限制 shift,用户将如何键入 @、#、$ 等特殊字符以及大小写混合(通常用户将通过按 shift 键键入大写字母,尽管大写锁定是另一种选择,我认为没有人会使用该选项)
  • @Gautam3164 keypress 事件仅识别 printable 键!如果您想让keycode 与您按下的所有键相关联,请使用keydown

标签: javascript jquery validation


【解决方案1】:

你可以对特殊字符这样做

      function nospecialChars(field) {
         var val = document.getElementById(field);
        var iChars = "!@#$%^&amp;*()+=-[]\\\';,./{}|\":&lt;&gt;?";
        for (var i = 0; i < val.value.length; i++) {
            if (iChars.indexOf(val.value.charAt(i)) != -1) {
                alert("Special Characters are not allowed");
                return false;
            }
        }
    }        

页面文本框更改方法调用函数

    <input type="text" id="txt" onkeyup="validate(this.id)" />    

【讨论】:

    【解决方案2】:

    试试 RegExp,下面的例子只允许字母数字和空格:

    $(function() {
      $('#profile_pstate').on('input', function() {
        this.value = this.value.replace(/[^\da-zA-Z\s]/g, '');
      });
    });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    <input type="text" id="profile_pstate" />

    【讨论】:

      【解决方案3】:

      我试过了

      $('#profile_country').on('keypress',function(e1){
          var cntry_key = e1.which;
          var cntry_key_code = e1.keyCode;
          if( (cntry_key_code == 0 && cntry_key > 0 && !e1.ctrlKey) || (cntry_key == 0 && cntry_key_code == 46) || (cntry_key == 8) 
                  || (e1.ctrlKey && cntry_key == 120) || (e1.ctrlKey && cntry_key == 118)
                  || (e1.ctrlKey && cntry_key == 86) || (e1.ctrlKey && cntry_key == 88)) {
              $('#profile_pstate').val('');
          }
      });
      

      它适用于 Alpha-Numeric, Special characters, Space, Backspace and Deletecontrol 事件,如 ctrl+A AND 仅适用于 cut(ctrl+x) 和 paste(ctrl+v)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-11-17
        • 2011-08-09
        • 1970-01-01
        • 1970-01-01
        • 2014-11-27
        • 2018-09-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多