JavaScript表单验证:为什么第一个有效而第二个无效';T

JavaScript表单验证:为什么第一个有效而第二个无效';T,javascript,html,forms,Javascript,Html,Forms,我有以下表格: <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;

我有以下表格:

<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;
            }

        }

年龄:
函数验证(){
var age=document.getElementById(“age”).value;
如果(年龄>100 | |年龄<0){
警报(“年龄必须在0到100之间”);
返回false;
}否则{
返回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;
            }
        }
函数验证(){
var age=document.getElementById(“age”).value;
var errorMessage=“”;
如果(年龄>100 | |年龄<0){
errorMessage=“年龄必须在0到100之间”;
}
如果(errorMessage!==“”)
警报(错误消息);
返回false;
}否则{
返回true;
}
}

那么为什么第一个有效,而第二个无效呢?

我看到在这种情况下左大括号缺失了。代码应为:

    if( errorMessage !== "" ){
        alert(errorMessage);
        return false;
    } else {
        return true;
    }
函数验证(){
var age=parseInt(document.getElementById(“age”).value),
错误信息;
如果(年龄>100 | |年龄<0)errorMessage=“年龄必须在0和100之间”;
如果(错误消息){
警报(错误消息);
返回false;
} 
否则{
返回true;
}
}

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

正如其他人所指出的,您的错误是语法错误。。。你错过了{if语句之后。你可能想考虑复制未来的代码并粘贴到一个在线JavaScript语法检查器中。例如:

我惊讶于第一个例子,因为文本元素的值是文本,而数字比较不应该是有意义的。当然第二个例子需要打开。{对于if/else块。@系统,我没有提到任何关于类型强制的内容。我提到了缺少的大括号。@汤加:没关系。你的浏览器控制台会告诉你的。在测试你的站点时,确保浏览器的开发工具是打开的。@thesystem:谢谢你的提醒。我应该用它来调试。我注意到了同样的问题当我将代码复制到jsfiddle并单击“整理”时,我感到非常惊讶。
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;
        }
    }