1

Web サイトに、検証しようとしているサブスクリプション フォームがあります。ユーザーがサインアップボタンをクリックすると、関数 validate() が呼び出され、フィールドが検証されるはずですが、機能しません。

明らかに、私のコードにはいくつかのエラーがあります。少しの知識でなんとかしようと思ったのですが、うまくいきません。私が間違っていることについて正しい方向に向けていただければ幸いです。

コードは次のとおりです。

function validate()
{
    var name = document.getElementById("name").value;
    var phone = document.getElementById("phone").value;
    var nat = document.getElementById("nat").value;
    var address = document.getElementById("address").value;
    var town = document.getElementById("town").value;
    var zip = document.getElementById("zip").value;
    var userName = document.getElementById("userName").value;
    var password = document.getElementById("password").value;
    var password2= document.getElentById("password2").value;

    if (name == "" )
    {
        window.alert("Please Enter your Full Name")
    }
    checkNr= isNaN(phone)

    if(checkNr == true)
    {
        window.alert("You can only enter numbers. Please try again")
    }

    if (nat == "")
    {
       window.alert("Please enter your nationality")
    }

    if (address == "")
    {
        window.alert("Please Enter your address")
    }

    if (password != password2)
    {
        window.alert("Your passwords did not match. Please re-enter")
    }
}

</script>

HTML:

<form name="subscribe">
    FULLNAME: </strong><input type="text" id="name"/><br />
    PHONE NR: <input type="text" id="phone"  onblur="validateForm()" /><br />
    NATIONALITY:<input type="text" id="nat" /><br />
    Address:<input type="text" id="address" /><br />
    Town:<input type="text" id="town" /><br />
    Zip Code: <input type="text" id="zip" /><br />
    Username: <input type="text" id="userName" /><br />

    Password:<input type="password" name="password" /><br />
    Retype:<input type="password" name="password2"  /><br />
    <input type="button" value="submit" onclick="validate()" />
</form>
4

3 に答える 3

1

私はあなたのコードでこれらの間違いを見つけました:

  1. validateForm()電話入力フィールドに機能が指定されていません
  2. フォームでデータを送信する場合は、送信ボタンsubmitではなくtype を設定しますbutton
  3. 何かが入力されていないときにフォームの送信を停止したい場合onsubmitは、フォームのイベントをフックします。

    <form onsubmit="return validate()"> ... // note the return keyword
    

そしてスクリプト

function validate() {
  ...
  if(somethingIsWrong) return false; // false stops submitting
  else return true; // do submit
}

getElentById@FranciscoAfonzoが言及したタイプミスにも注意してください

于 2013-05-05T06:12:10.343 に答える
0

いくつかの提案:

  1. JavaScript では、比較は===(equal to) と!==(not equal to) を使用して行われます。

  2. if ループに変数名しかない場合は、それで十分です。お気に入り:

    if (address)
    {
        window.alert("Please enter your address")
    }
    
于 2013-05-05T06:37:27.127 に答える
0

私は自分の間違いを見つけました。document.getパスワード入力欄では使えないようです。パスワードを取り出したところ、うまくいきました。その理由について、より多くの経験を積んだ人から意見を得ることができれば、それは素晴らしいことです。

于 2013-05-05T06:04:12.777 に答える