0

我现在正在完成一个关于表单验证的教程,我想知道为什么这个函数总是返回if条件。

<html>
<head>
</head>
<body>
     <form id="form" action="#" method="post">
        <fieldset>
            <p>
                First Name:
                <input type="text" id="txt" />
            </p>
            <p> <input type="submit" value="submit" onclick="validate()" /> </p>
        </fieldset>
    </form>
    <script type="text/javascript"> 
        function validate() 
            {
            var userName = document.getElementById("txt").value;
            if (userName.length == 0)
                {
                alert("FINISH THAT UP");
                return false;
                } 
            else 
                {
                alert("thanks, " + UserName);
                }
            }
    </script>
</body>

4

4 回答 4

4

当文本框不为空时,它确实到达了该else部分,但随后它因错误而崩溃,因此表单被静默提交。

JavaScript 区分大小写 -UserNameuserName未定义不同。

改成:

alert("thanks, " + userName);

为避免此类问题,您可以像这样包装整个块try..catch

function validate() 
{
    try
    {
        var userName = document.getElementById("txt").value;
        if (userName.length == 0)
        {
            alert("FINISH THAT UP");
            return false;
        } 
        else 
        {
            alert("thanks, " + UserName);
        }
    } catch (err) {
        alert("general error while validating: " + err.message);
        return false;
    }
}

有了这个,您会看到“用户名未定义”。

现场测试用例

此外,附带说明 - 使用您当前的代码,即使使用空值,尽管您返回 false,表单仍将被提交 - 这是因为您甚至需要取消提交:

<input type="submit" value="submit" onclick="return validate()" />

您忘记了本身的return关键字。onclick

于 2012-07-01T07:40:13.407 回答
3

JavaScript 是区分大小写的语言。因此,如下更正userNameelse 语句中的变量名。

  else {
      alert("thanks, " + userName); 
  }
于 2012-07-01T07:40:27.837 回答
0

你能试试这个吗?我认为这可行。

function validate() 
{
    try
    {
        var userName = document.getElementById("txt").value;
        if (userName)
        {
            alert("FINISH THAT UP");
            return false;
        } 
        else 
        {
            alert("thanks, " + UserName);
        }
    } catch (err) {
        alert("general error while validating: " + err.description);
    }
}
于 2012-07-01T07:54:16.247 回答
0

那这个呢

function validate(){
    $("#form").submit(function() {

    if($("#txt").val()==""){
        alert("FINISH THAT UP");
        return false;
    }
    if($("#txt").val()!=""){
        var un = $("#txt").val();
        alert("thanks, " + un);
        return true;
    }
   });

}
于 2012-07-01T08:02:22.967 回答