我正在开发一个有多种表单的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并单独处理它们,但是可以用另一个选项修复它吗?
答案 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;
}