Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Determine if every radio group has had an option selected

Tags:

jquery

I need to make sure that all the radio groups have been answered before I enable the submit button. If I have:

var radioBtns = $('input').filter(':radio');

It tells me how many radio buttons I've got, but I need to know if there are any groups that haven't had an option selected yet.

like image 856
Phillip Senn Avatar asked Dec 01 '22 02:12

Phillip Senn


2 Answers

If you know how many groups you have you can just do:

if($('input:radio:checked').length < numGroups){
    // At least one group isn't checked
}

Otherwise you need to count the number of groups first. I can't think of any way to do this better then:

var rgroups = [];
$('input:radio').each(function(index, el){
        var i;
        for(i = 0; i < rgroups.length; i++)
            if(rgroups[i] == $(el).attr('name'))
                return true;
        rgroups.push($(el).attr('name'));
    }
);
rgroups = rgroups.length;

if($('input:radio:checked').length < rgroups)
    alert('You must fill in all the fields.');
else
    alert('Thanks!');
like image 124
Paul Avatar answered Dec 09 '22 22:12

Paul


This works:

var all_answered = true;
$(':radio').each(function(){
    if($(':radio[name='+$(this).attr('name')+']:checked').length == 0)
    {
        all_answered = false;
    }
});
alert(all_answered);

Working demo: http://jsfiddle.net/AlienWebguy/8Cu6d/1/

like image 32
AlienWebguy Avatar answered Dec 10 '22 00:12

AlienWebguy