我有JavaScript可以检查文本字段和复选框,但是当收到单选按钮时,它无法区分是否选择了其中一个选项。
如何正确地做到这一点?
这就是我所拥有的:
validateBugForm = function()
{
var name = document.forms["bug_form"]["Name"].value;
var email = document.forms["bug_form"]["Email"].value;
var tos = document.forms["bug_form"]["Accept"].checked;
var project = document.forms["bug_form"]["project"].value;
if (name == "")
{
alert("You must provide your name or nick name!");
return false;
}
if (project == "")
{
alert("You must choose a project.");
return false;
}
if (email.indexOf ('@', 0) == -1 || email.indexOf ('.', 0) == -1)
{
alert("You must provide your email address!");
return false;
}
if (!tos)
{
alert("You must agree to our Terms of Services.");
return false;
}
}
在我的表格中,我有:
<tr>
<td width="30%">Choose a project in which you encountered a problem.
<big><font color="red">*</font></big></td></td>
<td width="10px" class="table_td_space"></td>
<td width="70%">
<input type="radio" name="project" value="1" id="1">1<br>
<input type="radio" name="project" value="2" id="2">2<br>
<input type="radio" name="project" value="3" id="3">3<br>
<input type="radio" name="project" value="4" id="4">4<br>
</td>
</tr>
答案 0 :(得分:6)
您需要遍历所有单选按钮选项以查看是否已选择一个:
var projectObj = document.form1.project
var len = projectObj.length
var chosen = null;
for (i = 0; i <len; i++) {
if (projectObj[i].checked) {
chosen = projectObj[i].value
}
}
if (chosen == null) {
alert("No Radio Button Chosen")
}
答案 1 :(得分:1)
只是一个注意事项,我花了一个小时在这个上面挠头,因为除非你试图验证一个超过这个无线电元素的表单,否则这个工作正常。由于每个单选按钮都是一个单独的表单元素,并且您试图遍历表单中的所有元素(例如,名称中包含“required_”的所有元素),这可能会使其余的验证陷入困境或导致它始终因为你在表单中循环检查每个单选按钮作为一个单独的元素,所以出现“假”。我找到的方法是使用隐藏的表单字段来保存所选单选按钮的值,方法是在每个单选按钮上放置onClick事件,以便在单击时将其值传递给隐藏字段 - 并检查是否存在值在那个隐藏的领域。并且不要将单选按钮标记为要检查的元素。
答案 2 :(得分:1)
您需要遍历所有单选按钮选项以查看是否选择了一个,但是当您持有“projectObj”时,您必须调用“value”方法...
var projectObj = document.form1.project.value;
var len = projectObj.length;
var chosen = null;
for (i = 0; i <len; i++) {
if (projectObj[i].checked) {
chosen = projectObj[i].value;
}
}
if (chosen == null) {enter code here
alert("No Radio Button Chosen");
}
然后它将获取其他方面的价值它只返回无线电对象列表