0

だから、私は連絡先フォームのあるページに取り組んでおり、フィールドが空かどうかをチェックしたいと思っています。以下の簡単なコードを使用していますが、最初の if でしか機能しません。送信をクリックすると、「あなたが誰であるか知りたい」としか表示されません。他の if ステートメントすら表示されません。

function validation() {

var name = document.getElementById("name").value;
var email = document.getElementById("email").value;
var subject = document.getElementById("subject").value;
var message = document.getElementById("message").value;

if(name == null || name == "") {
document.getElementById("name-error").innerHTML = "I want to know who you are!";
return false;
}

if(email == null || email == "") {
document.getElementById("email-error").innerHTML = "Give me your email!";
return false;
} 

if(subject == null || subject == "") {
document.getElementById("subject-error").innerHTML = "I need a subject!";
return false;
}

if(message == null || message == "") {
document.getElementById("message-error").innerHTML = "Don't forget your message!";
return false;
}

}

これが HTML です。

                <form name="contact" id="contact" action="./assets/send.php" method="post" id="form">

                <label>Full name</label>
                <input type="text" name="name" id="name"><span id="name-error"></span>
                <label>Email</label>
                <input type="text" name="email" id="email"><span id="email-error"></span>
                <label>Subject</label>
                <input type="text" name="subject" id="subject"><span id="subject-error"></span>
                <label>Message</label>
                <textarea name="message" id="message"></textarea><span id="message-error"></span>
                <button onclick="return validation()" type="submit" name="send" id="send">Send</button>

            </form>
4

2 に答える 2

2

return false;内で使用しているため、そのブロックif()を実行した後に制御が戻ります。if()

if(name == null || name == "") {
  document.getElementById("name-error").innerHTML = "I want to know who you are!";
  return false; // control returns from the function here.
}

関数内でローカル変数を保持し、関数の最後で返すことができるとより良いでしょう。initial に設定し、ブロック内trueに変更して、関数の最後のステートメントとして返します。 falseif(){}

function validation() {
   var isValid = true;
   if(someThingWrong) {
     // execute your logic here
     isValid = false;
   }
   return isValid;
}
于 2013-06-09T06:06:08.993 に答える
0

すべての if 条件の中にいるためreturn false;、そのうちの 1 つが満たされると、そこで実行が停止します。return ステートメントを使用する必要がある場合は、すべての if ステートメントの直後に配置します。

于 2013-06-09T06:13:15.413 に答える