不在javascript中验证特殊字符“_”

时间:2012-04-12 15:06:38

标签: php javascript

你好我正在使用javascript验证字段

我正在检查特殊字符..我正在实现的代码验证除_下划线之外的所有特殊字符。

   <script type="text/javascript" language="javascript">
function validateForm()
{
    var iChars = "!@#$%^&*()+=-[]\\\';,./{}|\":<>?_";

   for (var i = 0; i < document.reg_form.txtusername.value.length; i++) 
        {
            if (iChars.indexOf(document.reg_form.txtusername.value.charAt(i)) != -1) 
                {
                    alert ("Special Characters are not allowed.");
                    return false;
                        }
         }
    return true;
}
</script>

为此提交

<input name="txtusername" type="text" id="txtusername" maxlength="10" style="background-color:#CCC"  />

但它没有验证下划线

3 个答案:

答案 0 :(得分:2)

将它推入你的iChars变量是不合理的,这显然是你的“黑名单”?

var iChars = "!@#$%^&*()+=-[]\\\';,./{}|\":<>?_";

答案 1 :(得分:1)

var iChars = "!@#$%^&*()+=-[]\\\';,./{}|\":<>?_";

        for (var i = 0; i < document.reg_form.firstname.value.length; i++) 
        {
            if (iChars.indexOf(document.reg_form.firstname.value.charAt(i)) != -1) 
                {
                    alert ("Special Characters are not allowed");
                    return false;
                 }
         }

答案 2 :(得分:0)

字符串中的字符可以被解决,就好像字符串是一个数组(如果您考虑它,那就是)。既然你正在循环遍历字符串char-per-char,就像你对数组一样,为什么不在你的逻辑中保持一致呢?

if (iChars.indexOf(document.reg_form.firstname.value[i]) !== -1)
{
    alert('Foobar');
    return false;
}

这应该有用...另外:没有真正需要逃避单引号,因为iChar字符串由双引号分隔...如果所有其他方法都失败了,你可能想尝试省略反斜杠也是。虽然我不认为导致问题的是什么

工作正常:here