【问题标题】:Textbox with alphanumeric check in javascriptjavascript中带有字母数字检查的文本框
【发布时间】:2010-10-31 07:34:29
【问题描述】:

我有一个文本框,它不需要让用户输入任何特殊字符。他可以输入:

  1. A-Z
  2. a-z
  3. 0-9
  4. 空间。

还有一个条件是第一个字母应该是字母。 如何在每次按键时进行 JavaScript 验证?

【问题讨论】:

    标签: asp.net javascript


    【解决方案1】:

    添加一个 onKeyUp="javascript:checkChar(this);"到输入框。

    function checkChar(tBox) {   
    
        var curVal = tBox.value;
    
        if ( /[^A-Za-z0-9 ]/.test(curVal) ) { 
    
            //do something because he fails input test.
    
        }
    
    }
    

    或者只检查按下的键,您可以从事件中获取键码,如下所示:

    onKeyUp="javascript:checkChar(event);"

    function checkChar(e) {
    
        var key;
    
    
        if (e.keyCode) key = e.keyCode;
        else if (e.which) key = e.which;
    
        if (/[^A-Za-z0-9 ]/.test(String.fromCharCode(key))) {
    
            //fails test
    
        }
    
    }
    

    错过了关于第一个字符的部分,但您可以像第一个示例一样对文本框值进行测试:

    /^[A-Za-z]/.test(curVal)
    

    或者甚至使用第二种方法,但也传递文本框,这样您就可以获得它的全部价值。

    【讨论】:

      【解决方案2】:

      这个函数将检查给它的字符串是否符合这些条件:

      function checkvalue(value) {
        return value.match( /[A-Za-z][A-Za-z0-9 ]*/ );
      }
      

      然后您可以在 onkeypress 事件中使用它,并传入当前值。

      【讨论】:

      • 这可能是一个很好的验证,但 topicstarter 要求一种为他的文本框启用输入掩码的方法。
      【解决方案3】:

      现在我们有了 HTML5,您甚至不需要使用 JavaScript。您可以使用pattern 属性。

      <input type="text" pattern="[A-Za-z][A-Za-z0-9 ]*" title="Description of format" />
      

      pattern 属性应包含定义格式的regular expression。并且title 应该包含人类可读的格式描述。

      然后在验证时,根据浏览器的不同,浏览器会以红色勾勒该字段和/或显示一条消息,说明您对格式的描述。

      本教程更详细:HTML5 Input Validation Tutorial。

      【讨论】:

        【解决方案4】:

        您应该在文本框的 onkeydown 事件处理程序中检查按下的键,如果它不符合条件,则来自处理程序的return false。使用 keyup 将不允许您阻止 char 实际输入到文本框中。

        【讨论】:

          【解决方案5】:

          我认为您不应该检查每个按键,这对用户来说可能非常烦人。

          只需在失去焦点或提交时检查输入。

          为此,您可以使用正则表达式并使用此模式:

           `/[a-z]{1}[a-z0-9]/i`
          

          你也可以看看JQuery Validation Plugin

          【讨论】:

            猜你喜欢
            • 2015-07-10
            • 2011-05-26
            • 2013-06-20
            • 2022-01-20
            • 2013-05-08
            • 1970-01-01
            • 1970-01-01
            • 2016-06-03
            • 1970-01-01
            相关资源
            最近更新 更多