我将此脚本添加到jsp文件中。
这个函数总是返回true,即使在失败的情况下,比如没有匹配表达式和所有内容。
为什么会这样?怎么解决?
<script type="text/javascript">
function validate()
{
document.getElementById("user").innerHTML="";
document.getElementById("pass").innerHTML="";
document.getElementById("mail").innerHTML="";
document.getElementById("number").innerHTML="";
var expression = /^[a-zA-Z_.0-9]+$/;
var mailExp = /^[\w\-\.\+]+\@[a-zA-Z0-9\.\-]+\.[a-zA-z0-9]{2,4}+$/;
var numberExp = /^[0-9]+$/;
if(!document.getElementById('username').value.match(expression))
{
document.getElementById('username').focus();
document.getElementById("user").innerHTML=" Enter valid user name";
return false;
}
if(document.getElementById('password').value.length == 0)
{
document.getElementById('password').focus();
document.getElementById("pass").innerHTML = "Fill Password field";
document.getElementById("pass").style.visibility = "visible";
return false;
}
if(document.getElementById('cnfpassword').value.length == 0)
{
document.getElementById('cnfpassword').focus();
document.getElementById("pass").innerHTML = "Fill confirm Password field";
document.getElementById("pass").style.visibility = "visible";
return false;
}
if(document.getElementById('password').value != document.getElementById('cnfpassword').value)
{
document.getElementById('password').focus();
document.getElementById("pass").innerHTML = "Password and confirm password Not match";
document.getElementById("pass").style.visibility = "visible";
return false;
}
if(!document.getElementById('emailid').value.match(expression))
{
document.getElementById('emailid').focus();
document.getElementById("mail").innerHTML=" Enter valid E-mailID";
document.getElementById("mail").style.visibility = "visible";
return false;
}
if(!document.getElementById('number').value.match(numberExp))
{
document.getElementById('number').focus();
document.getElementById("number").innerHTML=" Enter only numbers";
document.getElementById("number").style.visibility = "visible";
return false;
}
else
{
return true;
}
}
3条答案
按热度按时间lb3vh1jj1#
除了重构建议之外,最简单的事情就是使用Firebug来调试错误,这将为您省去许多麻烦
bzzcjhmw2#
更改
document.getElementById('password').value.length == 0
到
document.getElementById('password').value.length === 0
在JavaScript中
全部以下将返回true
溶液
全部以下将返回false
"=="和"!="运算符将尝试在进行比较之前强制两个值为同一类型。
"==="和"!=="运算符(也称为标识运算符)在比较时检查类型和值
eblbsuwk3#
以上所述是正确的,其他仅对应最后一个
if
。还请注意,==与===不同。
此外,在函数中只使用一个
return
语句可能更好。