-2

你好我正在使用 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"  />

但它没有验证下划线

4

3 回答 3

2

将它推入您的 iChars 变量中是否没有意义,这显然是您的“黑名单”?

var iChars = "!@#$%^&*()+=-[]\\\';,./{}|\":<>?_";
于 2012-04-12T15:09:06.233 回答
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;
                 }
         }
于 2012-04-12T15:10:45.640 回答
0

字符串中的字符可以像字符串是一个数组一样被寻址(如果你考虑一下,它就是)。由于您正在循环遍历字符串 char-per-char,再次,就像您使用数组一样,为什么在您的逻辑中不一致?

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

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

它正在工作:这里

于 2012-04-12T15:30:53.077 回答