为什么不是';这个Javascript电子邮件验证是否只验证第一个if语句?

为什么不是';这个Javascript电子邮件验证是否只验证第一个if语句?,javascript,Javascript,所以,我正在处理一个带有联系人表单的页面,我想让它检查字段是否为空。我在下面使用这个简单的代码,但它只适用于第一个if。当我点击提交时,它只显示“我想知道你是谁”。它甚至看不到其他if语句 function validation() { var name = document.getElementById("name").value; var email = document.getElementById("email").value; var subject = document.getEl

所以,我正在处理一个带有联系人表单的页面,我想让它检查字段是否为空。我在下面使用这个简单的代码,但它只适用于第一个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>

全名
电子邮件
主题
消息
发送

因为您使用的是
返回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.
}
如果您可以在函数中保留一个局部变量,并在函数末尾返回它,那就更好了。最初将其设置为
true
,在
if(){}
块内将其更改为
false
,并将其作为函数的最后一条语句返回

function validation() {
   var isValid = true;
   if(someThingWrong) {
     // execute your logic here
     isValid = false;
   }
   return isValid;
}

因为您
返回false
在所有if条件中,当满足其中一个条件时,它停止执行。如果必须使用return语句,请在所有If语句之后将其放在末尾。

您是否尝试过在firefox中启用firebug并检查它是否生成JS错误?通常情况下,如果您看到第一个错误,那么您会自动得到一个
返回false它结束了你的函数…所以,我应该只有在返回时为false;在最后一个if?No时,您应该使用标志变量并返回标志状态。毫无疑问,很快就会有人发布一个示例。为什么要将值与
null
进行比较?谢谢,它可以工作!现在唯一的错误是,比方说,如果我只在第一次输入我的电子邮件,然后在第二次输入我的名字,它仍然发送消息,即使其他两个字段为空。但是,我认为这可能是因为这个代码太简单了。