繁体   English   中英

JavaScript表单验证:为什么第一种有效,但第二种无效?

[英]JavaScript form validation: Why does the first work but the second doesn't?

我有以下表格:

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

那么,为什么第一个起作用而第二个却不起作用呢?

这种情况发生后,我看到左支撑缺失。 代码应为:

    if( errorMessage !== "" ){
        alert(errorMessage);
        return false;
    } else {
        return true;
    }
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!=“”):-)之后没有括号

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM