【发布时间】:2019-05-07 00:39:34
【问题描述】:
表单验证的其余部分工作正常,直到我做到这一点: Sex 必须是等于 M、m、F 或 f 的单个字符
<script>
function verify() {
if (document.forms[0].age.value < 18) {
alert ("Age must be between 18 and 30");
return false;
}
if (document.forms[0].age.value > 30) {
alert ("Age must be between 18 and 30");
return false;
}
if (document.forms[0].age.value == "") {
alert ("Age must be between 18 and 30");
return false;
}
if (document.forms[0].last.value == "") {
alert ("Last name canot be empty.");
return false;
}
if (document.forms[0].sex.value !== "M" || "m" ||"F" ||"f")
alert ("Please indicate your sex.");
return false;
}
alert ("Thank you for your submission.")
return true;
}
</script>
预期:表单提交的每个问题的弹出窗口。在添加有关性别验证的内容之前,我得到了一些。
实际:现在没有弹出窗口。
【问题讨论】:
-
你不能像那样组合测试;您需要完整地陈述每个表达式。更简单的方法是测试值是否包含在字符串
"MmFf"中。 -
在表单验证方面,有许多假设是一个好的表单不允许的(即使在美国,一个人也可以合法地只有一个名字。您的表单将这些人锁定在外面。询问他们的法定姓名,让他们根据这意味着什么来填写?此外,询问人们的性别或性别几乎总是让自己受到投诉,除非您有真正的医疗理由知道该信息)。也就是说,如果您有一组预定义的互斥值,请使用单选组,这样人们就无法在没有 DOM 黑客的情况下设置无效值。
标签: javascript forms validation if-statement boolean