javascript - 如果没有执行 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>
当按下提交按钮时,我希望表单提交时会发出警报并清除(如果所有字段都已完成),如果所有字段都未完成,我希望表单不会提交。
解决方案
你真的应该使用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;
}
推荐阅读
- makefile - Fortran 的 Makefile 给出了这个错误:make: don't know how to make datastructures.o
- azure - Azure put_block_blob_from_path():避免超时错误
- c# - 检查非轴对齐边界框是否包含另一个
- c# - 如何将 ComboBox.SelectedItem 转换为字符串
- haskell - 如何在 Haskell 中使用随机性来生成 JSON“模型”的实例?
- php - 如何获取数组的某些部分并输出到字符串中?
- javascript - 使用 post 参数打开 url
- architecture - ESB 通常会提供多少业务逻辑/抽象
- django - 将查询集 RelatedFields 限制为仅当前相关的对象
- wordpress - 自定义 wp_query,其中 meta_key 是可变的或不需要