JavaScript表单验证:为什么第一个工作但第二个不工作?

时间:2013-02-21 19:01:10

标签: javascript html forms html-form

我有以下表格:

<form action="next.html" id="userInput" method="post" onsubmit="return validate();">
     Age: <input type="text" name="age" id="age"/>


function validate() {
            var age = document.getElementById("age").value;

            if(age > 100 || age < 0) {

                alert("Age must be within 0 and 100");
                return false;
            } else {
                return true;
            }

        }

这正常。如果我在年龄文本框中输入的数字大于100,它将显示错误消息并保留在当前表单页面。

但是,如果我使用变量errorMessage作为以下内容来显示警告框,则它不起作用。它将转到下一页而不会弹出警报错误消息。

function validate() {
            var age = document.getElementById("age").value;

            var errorMessage="";
            if(age > 100 || age < 0) {
                errorMessage = "Age must be within 0 and 100";
            }


            if( errorMessage !== "" )
                alert(errorMessage);
                return false;
            } else {
                return true;
            }
        }

那么为什么第一次工作却第二次工作没有?

3 个答案:

答案 0 :(得分:5)

在病情发生后我看到左支撑缺失了。代码应该是:

    if( errorMessage !== "" ){
        alert(errorMessage);
        return false;
    } else {
        return true;
    }

答案 1 :(得分:3)

function validate() {
        var age = parseInt(document.getElementById("age").value),
        errorMessage;

        if(age > 100 || age < 0) errorMessage = "Age must be within 0 and 100";
        if(errorMessage) {
            alert(errorMessage);
            return false;
        } 
        else {
            return true;
        }
    }

我缩短了一点,但你的主要问题是在if(errorMessage!=“”)之后没有括号: - )

答案 2 :(得分:1)

您的错误是语法,正如其他人指出的那样......您错过了{在if语句之后。您可能需要考虑复制未来的代码并将其粘贴到在线JavaScript语法检查器中。例如。 http://www.javascriptlint.com/online_lint.php