Reputation: 55
I'm working on a webapp that has several forms. The problem comes when two inputs have the same name. I want to alert user if no one is selected. That works perfectly on Chrome, but Firefox can't say me if both of them aren't treated.
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"/>
When I submit this form without selecting any of two radius, Chrome alerts me with "One of two ambits must be selected". But Firefox doesn't notify me of anything.
My first though was to give an ID to both inputs and treat them separately, but is it possible to fix this with another option?
Upvotes: 1
Views: 118
Reputation: 8401
For firefox doc.ambit.value
is coming as array
So put this check,
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;
}
Upvotes: 1
Reputation: 3071
Instead of assuming form is valid first and checking if it's not, try assuming it's not valid and checking to see if it is.
Then you can loop through each radio button and set valid to true if you find one which is checked. Like this:
var valid = false;
var ambitValues = doc.getElementsByName('ambit')
for (var i = 0; i < ambitValues.length; i++) {
if (ambitValues[i].checked) {
valid = true;
}
};
Upvotes: 1