0

我有 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>
4

3 回答 3

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")
}

http://homepage.ntlworld.com/kayseycarvey/jss3p11.html

于 2012-04-23T02:58:47.910 回答
1

只是一个说明,我花了一个小时来摸索这个问题,因为这很好用,除非你试图验证一个包含比这个单选元素更多的表单。由于每个单选按钮都是一个单独的表单元素,并且您试图遍历表单中的所有元素(例如,名称中带有“required_”的所有元素),这可能会混淆其余的验证或导致它始终出现“错误”,因为您最终会在遍历表单时将每个单选按钮作为单独的元素进行检查。我发现的解决方法是使用隐藏的表单字段来保存所选单选按钮的值,方法是在每个单选按钮上放置一个 onClick 事件,以便在单击时将其值传输到隐藏字段 - 并检查是否有一个值在那个隐藏的领域。并且不要

于 2013-02-11T16:35:13.023 回答
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");
} 

那么它将取值,否则它只会返回无线电对象列表

于 2015-06-23T10:04:16.743 回答