Проверить группу радиокнопок на заполнение?

Есть форма со множеством групп радиокнопок. У каждой группы свои имена вида name="answer[1]".
Мне нужно проверить, выбрано ли хоть одно значение в каждой группе: если да - то сабмитим форму, нет - то выводим список не выбранных.

Я пробую так:
/** * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann * (http://qbnz.com/highlighter/ and http://geshi.org/) */ .javascript.geshi_code {font-family:monospace;} .javascript.geshi_code .imp {font-weight: bold; color: red;} .javascript.geshi_code .kw1 {color: #000066; font-weight: bold;} .javascript.geshi_code .kw2 {color: #003366; font-weight: bold;} .javascript.geshi_code .kw3 {color: #000066;} .javascript.geshi_code .co1 {color: #006600; font-style: italic;} .javascript.geshi_code .co2 {color: #009966; font-style: italic;} .javascript.geshi_code .coMULTI {color: #006600; font-style: italic;} .javascript.geshi_code .es0 {color: #000099; font-weight: bold;} .javascript.geshi_code .br0 {color: #009900;} .javascript.geshi_code .sy0 {color: #339933;} .javascript.geshi_code .st0 {color: #3366CC;} .javascript.geshi_code .nu0 {color: #CC0000;} .javascript.geshi_code .me1 {color: #660066;} .javascript.geshi_code span.xtra { display:block; }

$(document).ready(function(){
      $('form[name=test1]').submit(function(){                
        var return_value = false;            
        var error_msg = 'Вы не тветили на следующие вопросы: '+'n';  
        for (var i = 1; i <= 6; i++) {
        if (!$("input[name='answer[" + i + "]']:checked").val()) {
          error_msg +="-";
        }
        else {
          return_value = true;
        }
        }
        if(!return_value)                
          alert(error_msg);              
        return return_value;        
            });
    });
 

Но это работает только на одну группу кнопок, остальные не проверяются.

Вот форма:
/** * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann * (http://qbnz.com/highlighter/ and http://geshi.org/) */ .javascript.geshi_code {font-family:monospace;} .javascript.geshi_code .imp {font-weight: bold; color: red;} .javascript.geshi_code .kw1 {color: #000066; font-weight: bold;} .javascript.geshi_code .kw2 {color: #003366; font-weight: bold;} .javascript.geshi_code .kw3 {color: #000066;} .javascript.geshi_code .co1 {color: #006600; font-style: italic;} .javascript.geshi_code .co2 {color: #009966; font-style: italic;} .javascript.geshi_code .coMULTI {color: #006600; font-style: italic;} .javascript.geshi_code .es0 {color: #000099; font-weight: bold;} .javascript.geshi_code .br0 {color: #009900;} .javascript.geshi_code .sy0 {color: #339933;} .javascript.geshi_code .st0 {color: #3366CC;} .javascript.geshi_code .nu0 {color: #CC0000;} .javascript.geshi_code .me1 {color: #660066;} .javascript.geshi_code span.xtra { display:block; }

<li id="1"><span id="q1"><h4>Какие из указанных ниже компонентов необходимы для функционирования группы объявлений в сети?</h4></span>
<ul>
<li><input type="radio" name="answer[1]" value="2" /> места размещения, КФ, сетевой таргетинг</li>
<li><input type="radio" name="answer[1]" value="3" /> текстовые объявления, кф. Ставка по умолчанию</li>
<li><input type="radio" name="answer[1]" value="4" /> ограниченная частота показов, дневной бюджет, планирование показов объявлений</li>
<li><input type="radio" name="answer[1]" value="1" /> ставка по умолчанию, предпочтительная позиция, места размещения</li>
</ul>
</li>
<li id="2">
<span id="q3"><h4>Рекламодатель хочет выяснить, почему отсутствуют показы по определённым КФ . как можно осуществить быструю диагностику проблемы?</h4></span>
<ul>
<li><input type="radio" name="answer[3]" value="12" /> перейти в раздел «анализ конкуренции» на вкладке «оптимизация»</li>
<li><input type="radio" name="answer[3]" value="9" /> повысить ставки максимальной цены за клик для КФ</li>
<li><input type="radio" name="answer[3]" value="11" /> Навести указатель мышки на всплывающее окно  подсказки рядом с КФ</li>
<li><input type="radio" name="answer[3]" value="10" /> получить статистику показов с помощью инструмента  оценки трафика</li>
</ul>
</li>
 

1 ответов



$('form').submit(function() {
    var return_value = true;
    var error_msg = 'Вы не тветили на следующие вопросы: ' + '\n';

    $('form > li').each(function(index) {
        if ($(this).find('input:checked').length == 0) {
            return_value = false;
            error_msg += $(this).find('h4').text() + '\n';
        }
    });

    if (!return_value)
        alert(error_msg);
   
    return return_value;
});
 
http://jsfiddle.net/R2jbt/

Не проще ли к каждой радиокнопке добавить атрибут required и сам браузер будет требовать ат пользователя, чтобы он ответил на вопрос.

Вставлять так:


<input type='radio' name='answer' required>