两个具有相同名称的输入

时间:2014-07-10 11:05:58

标签: javascript html google-chrome firefox

我正在开发一个有多种表单的webapp。当两个输入具有相同名称时,问题就出现了。如果没有人被选中,我想提醒用户。这在Chrome上完美运行,但如果两者都没有得到处理,Firefox就无法告诉我。

的JScript:

function validateForm(assignmentForm)   
{
        doc = document.getElementById(assignmentForm);
        var messages = [];
        valid = true;

        if (doc.ambit.value=="")
        {
            messages.push("One of two ambits must be selected");
            valid = false;     
        }

        if (doc.name.value=="")
        {
           messages.push("Write a name");
           valid = false;     
        }

        if(!valid){
            alert(messages.join('\n'));
            return false;
        }
        return true;
}

HTML:

<input name="name" type="text"></input>
<input name="ambit" type="radio" value="center" ></input>
<input name="ambit" type="radio" value="titulation"></input>
<input type="submit" value="submit"/>

当我提交此表单而未选择任意两个半径时,Chrome会提醒我&#34;必须选择其中一个范围&#34;。但Firefox并没有通知我任何事情。

我的第一个问题是给两个输入分配一个ID并单独处理它们,但是可以用另一个选项修复它吗?

2 个答案:

答案 0 :(得分:1)

不要先假定表单有效并检查表单是否有效,请尝试假设它无效并检查表单是否有效。

然后,您可以循环浏览每个单选按钮,如果找到一个已选中的按钮,则将有效设置为true。像这样:

var valid = false;
var ambitValues = doc.getElementsByName('ambit')

for (var i = 0; i < ambitValues.length; i++) {
    if (ambitValues[i].checked) {
        valid = true;
    }
};

答案 1 :(得分:1)

对于firefox doc.ambit.value即将array 所以把这个检查,

    ischecked_method = false;
    for ( var i = 0; i < doc.ambit.length; i++) {
      if(doc.ambit[i].checked) {
        ischecked_method = true;
        break;
      }
    }

    if (!ischecked_method)
    {
        messages.push("One of two ambits must be selected");
        valid = false;     
    }