0

我有以下表格:

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

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

4

3 回答 3

5

我看到条件后缺少左大括号。代码应该是:

    if( errorMessage !== "" ){
        alert(errorMessage);
        return false;
    } else {
        return true;
    }
于 2013-02-21T19:06:47.210 回答
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 != "") 之后没有括号:-)

于 2013-02-21T19:07:57.003 回答
1

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

于 2013-02-21T19:19:00.120 回答