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

        }

これは正常に機能します。age テキストボックスに 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;
            }
        }

では、なぜ最初は機能するのに 2 番目は機能しないのでしょうか?

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 に答える