views:

34

answers:

2

I'm dynamically pulling and displaying radio button quesitons on a form (separated into different sections by jquery tabs).

So there are lots of 2, 3, 4, 5 etc radio buttons together, which have the same 'name' but different ids.

When you hit next between the sections, I want to check that at least one radio button has been selected for each group.

( When the form loads, the radio buttons have none checked by default and it has to be this way. )

I can loop through the current section's radio buttons but I'm not sure how to easily check that one has been checked for each group?

A: 

In the absence of any relationship between elements, or how to find the group names, I can only give you a pointer, but this should work (the check's triggered by clicking on the element of id="nextButton", but obviously this can be customised to any other appropriate event, such as $('form').submit(), for example):

$(document).ready(
function(){
  $('#nextButton').click(
    function(){

    var radioName = something; // use this if there's a relationship between the element
                               // triggering this check and the radio buttons

      if ($('input[name='+ radioName +']:checked').length) {
           // at least one of the radio buttons was checked
           return true; // allow whatever action would normally happen to continue
      }
      else {
           // no radio button was checked
           return false; // stop whatever action would normally happen
      }
    }
  );
}
);
David Thomas
A: 
$("input[@name='the_name']:checked").length;
eKek0
The `@` syntax has been [deprecated since jQuery 1.1.4 (in the comments section)](http://api.jquery.com/attribute-equals-selector/).
David Thomas