好吧,我在用jQuery验证表单时遇到了问题。我没有使用任何验证框架(例如http://docs.jquery.com/Plugins/Validation),因为我需要在没有任何预构建解决方案的情况下执行此操作(顺便提一下,这是用户要求,Strange)。我有一个文本框,我需要验证任何字符串,但是,该字符串没有数字或特殊字符(例如!“·$%& /()=;,:。 - _),这是一个人名。这是我的代码:
<script type="text/javascript">
$(document).ready(function(){
var onlyChars = /^[A-Za-z]+$/;
var onlyNums = /^[0-9]+$/;
var mail = /^[^0-9][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[@][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[.][a-zA-Z]{2,4}$/;
var name = $("#txtname");
function validateName()
{
if (name.val().length > 25)
{
alert("Too Longer");
return false;
}
else if (name.val().match(/^[A-Za-z]+$/))
{
alert("Error, Pattern Doesn't Match");
return false;
}
else
{
return true;
}
}
$("#submitform").submit(function(){
if (validateName())
{
return true;
}
else
{
return false;
}
});
});
</script>
第一次验证没问题(如果我写了超过25个字符,触发警报并且提交事件被中止),但是,第二次验证不会这样做。在这种情况下发生两个事件:
字段,包含不允许的字符“通过”验证并提交表单。
字段,仅包含允许的字符不通过验证,表单未提交。
我检查了一切,“两个问题”完全是随机的。
你可以给我一些帮助吗?非常感谢!
PS:对不起英语,我不是“母语人士”
答案 0 :(得分:1)
您的代码是说 ==&gt;
如果名称匹配正确,说 “模式不匹配”
看看你的代码:
else if (name.val().match(/^[A-Za-z]+$/))
//change this to else if (!(name.val().match(/^[A-Za-z]+$/)))
{
alert("Error, Pattern Doesn't Match");
return false;
}
else
{
return true;
}
答案 1 :(得分:0)
好的,我会咬人。
仔细看看这段代码:
else if (name.val().match(/^[A-Za-z]+$/))
{
alert("Error, Pattern Doesn't Match");
return false;
}
其内容如下:如果名称与模式匹配,则告诉用户它没有,也不提交。你想反过来说:
else if (!name.val().match(/^[A-Za-z]+$/))
{
alert("Error, Pattern Doesn't Match");
return false;
}
答案 2 :(得分:0)
你应该使用Firebug并设置一个断点来遍历代码,它可能会给你一个提示,告诉你为何会进入错误的代码块。