【问题标题】:How To Only Allow Alpha Numeric Chars With JavaScript如何只允许使用 JavaScript 的字母数字字符
【发布时间】:2011-06-06 17:50:04
【问题描述】:

一直在玩 JavaScript,而我试图做的是只允许密码字段中的某些字符 - a-z、A-Z 和 0-9。

<form action="http://www.cknuckles.com/cgi/echo.cgi" method="get" name="logOn">
  User Name:<br />
  <input type="text" name="userName" size="25" /><br />
  Password:<br />
  <input type="password" name="pw" size="25" /><br />
  <input type="submit" value="Log In" onClick="validate()"/> 
</form>

上面是我的 HTML,下面是我试图用来验证它的 JavaScript - 但它不起作用 - 任何线索。

<script language="javascript">
   document.logOn.onsubmit=validate;

   function validate(){

var name=document.logOn.pw.value;
    if(!name = "[a-zA-Z0-9]"){              
alert("Your Password Cant Have Any Funky Things In It - Play It Straight!");
    return false;
}               

    return true;
}
</script>

但这不起作用。我仍然可以将字符放入“*”和“[”和“{”等。

有什么想法吗?

【问题讨论】:

    标签: javascript


    【解决方案1】:

    你需要让你的条件测试一个正则表达式,而不是一个字符串:

    if(!/^[a-zA-Z0-9]+$/.test(name)){ ...
    

    意思:

    • ^ -- 行首
    • [a-zA-Z0-9]+ -- 一个或多个字符/数字
    • $ -- 行尾

    或者你可以搜索它的倒数,即“任何不被接受的字符”:

    if(/[^a-zA-Z0-9]/.test(name)){
    

    【讨论】:

    • 你能发布一个正在运行的小提琴示例吗...我用上面的代码替换了 if 块,但它不起作用..
    • 这个问题已经 18 个月了。如果您遇到问题,请发布一个新问题。
    【解决方案2】:
    if (name.match(/[\W_]/)) { //...
    

    意味着如果“名称”字符串有任何非字母数字或下划线字符,则执行该块。请注意,我们必须单独检查下划线 (_),因为字母数字字符类 (\w) 包含下划线(因此否定类 (\W) 会)。 p>

    【讨论】:

      【解决方案3】:

      以下解决方案将只接受字母数字值和一些 backspacedelete 等特殊键

      如果你想添加一些其他键然后添加到数组中。

      如果你想添加一些特殊符号添加到同一个数组或创建一个新数组并在函数上进行比较,例如:yourNewVariableName.indexOf(e.keyCode)

      var specialKeys = [8, 9, 46, 36, 35, 37, 39];
              function IsAlphaNumeric(e) {
                  var keyCode = e.keyCode == 0 ? e.charCode : e.keyCode;
                  var ret = ((keyCode >= 48 && keyCode <= 57) || (keyCode >= 65 && keyCode <= 90) || (keyCode >= 97 && keyCode <= 122) || (specialKeys.indexOf(e.keyCode) != -1 && e.charCode != e.keyCode));
                  return ret;
              }
      Alphanumeric value:
      <input type="text" onkeypress="return IsAlphaNumeric(event);" ondrop="return false;" onpaste="return false;" />

      【讨论】:

        猜你喜欢
        • 2011-11-24
        • 2016-10-07
        • 1970-01-01
        • 2015-05-28
        • 1970-01-01
        • 1970-01-01
        • 2015-06-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多