首页 > 解决方案 > 如果没有执行 Else 语句

问题描述

我有一个联系表格,其中包括必填字段。我写了一个 If else 语句,如果必填字段为空,则不会发送表单,如果是,则发送并清除表单。语句的 If 部分正在执行,但 else 似乎没有执行。我还在学习 Javascript,所以我可能做错了什么。

我曾尝试查看 If else 语句的布局并修改地雷,但这并没有帮助。

<form name="myForm" class="contact-form" 
action="mailto:someone@example.com" method="post" enctype="text/plain">
    <input type="text" name="yname" class="contact-form-text" 
placeholder="Your Name" required>
    <input type="email" name="yemail" class="contact-form-text" 
placeholder="Your Email" required>
    <textarea class="contact-form-text" name="ymessage" placeholder="Your 
Message" required></textarea>
    <input type="reset" class="contact-form-btn-reset" value="Reset">
    <input type="submit" class="contact-form-btn" onClick="return 
submitForm()" value="Send">

    <script>
      function submitForm() {
        var x = document.forms["myForm"][yname][yemail][ymessage].value;
        if (x == "") {
          alert("Please complete form.");
          return false;
        } else {
          alert("Your message has been sent.");
          var frm = document.getElementsByName('myForm')[0];
          frm.submit();
          frm.reset();
          return false;
        }
      }
    </script>
  </form>

当按下提交按钮时,我希望表单提交时会发出警报并清除(如果所有字段都已完成),如果所有字段都未完成,我希望表单不会提交。

标签: javascripthtmlfunctionif-statementcontact-form

解决方案


你真的应该使用onSubmit处理程序

正如人们已经在评论中指出的那样,已经有一种内置方法可以在提交表单之前验证所有必填字段是否已填写,使用起来更加优雅。为此,您需要做的就是使用onSubmit处理程序而不是onClick

<input type="submit" class="contact-form-btn" onClick="return submitForm()" value="Send">

这样,您无需编写任何代码来验证用户是否正确填写了所有字段。

如果您仍想使用 javascript:

您编写的代码无法按预期工作,因为yname您的空间上没有调用 var。如果您真的想通过 javascript 进行此检查,您可以执行以下操作:

var myForm = document.forms["myForm"];
if (!myForm["yname"].value || myForm["email"].value || myForm["ymessage"].value) {
  alert("Please complete form.");
  return false;
}

推荐阅读