JavaScript总是返回true

JavaScript always returns true

本文关键字:true 返回 JavaScript      更新时间:2023-09-26

我将这个脚本添加到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;
    }
 }

除了重构建议之外,最简单的方法就是使用Firebug并调试出错的地方。这会帮你省去很多麻烦

改变document.getElementById('password').value.length == 0

document.getElementById('password').value.length === 0

0==""      
0== "0"
false== "0"
null== undefined
0==' 't'r'n '
解决方案

0===""      
0=== "0"
false=== "0"
null=== undefined
0===' 't'r'n '

"==" and "!操作符将在进行比较之前尝试将两个值强制转换为相同的类型。

"===" and "!操作符(也称为标识操作符)在比较时检查类型和值

以上所说的都是正确的,else只对应于最后一个if

还要注意==和===不一样。

另外,最好在函数中只使用一个return语句。