首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么这个Javascript电子邮件验证不只验证第一个if语句?

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

Stack Overflow用户
提问于 2013-06-09 14:03:52
回答 2查看 353关注 0票数 0

所以,我正在处理一个带有联系人表单的页面,我想让它检查字段是否为空。我使用下面这段简单的代码,但它只适用于第一个if。当我点击提交时,它只会显示“我想知道你是谁”。它甚至看不到其他的if语句!

代码语言:javascript
运行
复制
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:

代码语言:javascript
运行
复制
                <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>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-09 14:06:09

因为您在if()中使用return false;,所以控件在执行该if()块后返回。

代码语言:javascript
运行
复制
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,并将其作为函数的最后一条语句返回。

代码语言:javascript
运行
复制
function validation() {
   var isValid = true;
   if(someThingWrong) {
     // execute your logic here
     isValid = false;
   }
   return isValid;
}
票数 2
EN

Stack Overflow用户

发布于 2013-06-09 14:13:15

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17006926

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档