JavaScript验证以检查是否选中了单选按钮?

时间:2014-04-28 01:26:45

标签: javascript html

我有以下表格:

<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;
}

当我检查其中一个按钮或没有按钮时,表单仍然提交,但所有其他验证语句似乎都有效。有没有理由说它不起作用,或者你能建议一种更好的方法来检查是否至少选择了一个单选按钮?感谢。

2 个答案:

答案 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

现在您无需验证是否已选中一个。