我有以下表格:
<form name="form" action="contact_submit.php" onsubmit="return validateForm()"
method="post">
<h2>Your Name</h2>
<input type="text" name="name">
<h2>Your E-mail Address</h2>
<input type="text" name="email" />
<h2>Phone Number</h2>
<input type="text" name="phone" />
<h2>Your Message</h2>
<input type="text" name="message" width="300px" height="200px" />
<h2>Preferred Contact?</h2>
<input type="radio" name="contact" value="email" id="email-pref">Email
<input type="radio" name="contact" value="phone" id="phone-pref"> Phone
<input type="submit" value="Submit">
</form>
提交后,执行此JavaScript代码(在validateForm()函数中):
if (document.getElementByID("email-pref").checked == true ||
document.getElementByID("phone-pref").checked == true) {
alert("poopoo");
return false;
}
else {
alert("Contact preference must be filled out");
return false;
}
当我检查其中一个按钮或没有按钮时,表单仍然提交,但所有其他验证语句似乎都有效。有没有理由说它不起作用,或者你能建议一种更好的方法来检查是否至少选择了一个单选按钮?感谢。
答案 0 :(得分:1)
JavaScript区分大小写。它是getElementById
而非getElementByID
。
答案 1 :(得分:0)
如果您按名称引用单选按钮,则不需要 getElementById (因此可以删除ID属性)。使用 this :
将对表单的引用传递给侦听器<form ... onsubmit="return validateForm(this)" ...>
然后在函数引用名称中的无线电组:
function validateForm(form) {
var contacts = form.contact;
if (contacts[0].checked || contacts[1].checked) {
// one or the other is checked
} else {
// neither is checked
}
// more validation ...
}
但是,使用单选按钮时,您可以默认选中一个,然后您可以确保在发布表单时检查一个:
<input type="radio" name="contact" value="email" checked>Email
<input type="radio" name="contact" value="phone"> Phone
现在您无需验证是否已选中一个。