你好我正在使用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" />
但它没有验证下划线
答案 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