0

現在、フォームの検証に関するチュートリアルに取り組んでいます。この関数が常にif条件を返す理由について支援をお願いします。

<html>
<head>
</head>
<body>
     <form id="form" action="#" method="post">
        <fieldset>
            <p>
                First Name:
                <input type="text" id="txt" />
            </p>
            <p> <input type="submit" value="submit" onclick="validate()" /> </p>
        </fieldset>
    </form>
    <script type="text/javascript"> 
        function validate() 
            {
            var userName = document.getElementById("txt").value;
            if (userName.length == 0)
                {
                alert("FINISH THAT UP");
                return false;
                } 
            else 
                {
                alert("thanks, " + UserName);
                }
            }
    </script>
</body>

4

4 に答える 4

4

テキストボックスが空でない場合は部分に到達elseしますが、エラーでクラッシュするため、フォームはサイレントに送信されます。

JavaScript は大文字と小文字を区別します -したがって undefinedUserNameとは異なります。userName

への変更:

alert("thanks, " + userName);

このような問題を回避するには、ブロック全体を次のtry..catchようにラップします。

function validate() 
{
    try
    {
        var userName = document.getElementById("txt").value;
        if (userName.length == 0)
        {
            alert("FINISH THAT UP");
            return false;
        } 
        else 
        {
            alert("thanks, " + UserName);
        }
    } catch (err) {
        alert("general error while validating: " + err.message);
        return false;
    }
}

これを行うと、「UserName is undefined」と表示されます。

ライブ テスト ケース

また、補足として、現在のコードでは、値が空の場合でもフォームは送信されますが、false を返します。これは、送信をキャンセルする必要があるためです。

<input type="submit" value="submit" onclick="return validate()" />

returnキーワードonclick自体を忘れました。

于 2012-07-01T07:40:13.407 に答える
3

JavaScript は大文字と小文字を区別する言語です。userNameそのため、 else ステートメントの変数名を次のように修正します。

  else {
      alert("thanks, " + userName); 
  }
于 2012-07-01T07:40:27.837 に答える
0

これを試してみませんか?これでうまくいくと思います。

function validate() 
{
    try
    {
        var userName = document.getElementById("txt").value;
        if (userName)
        {
            alert("FINISH THAT UP");
            return false;
        } 
        else 
        {
            alert("thanks, " + UserName);
        }
    } catch (err) {
        alert("general error while validating: " + err.description);
    }
}
于 2012-07-01T07:54:16.247 に答える
0

これはどうですか

function validate(){
    $("#form").submit(function() {

    if($("#txt").val()==""){
        alert("FINISH THAT UP");
        return false;
    }
    if($("#txt").val()!=""){
        var un = $("#txt").val();
        alert("thanks, " + un);
        return true;
    }
   });

}
于 2012-07-01T08:02:22.967 に答える