Проверьте, выбран ли хотя бы один параметр в форме с переключателями и флажками - PullRequest
0 голосов
/ 18 апреля 2011

После этой темы здесь Мне удалось добавить проверку в форму с обоими переключателями и флажками: если хотя бы один параметр для каждого вопроса выбран, кнопка отправки включена.

вот код:

 $('input:submit').attr('disabled',true);
 var input_groups = {}
 $("input:radio, input:checkbox").each(function(){
                          $(this).attr('checked', false);
                          input_groups[this.name] = true;
                         });

 $('input:radio, input:checkbox').change(function() {

var submission = true;


for(group in input_groups){

   is_checked = !!$("[name=" + group + "]:checked").length

   if(!is_checked){ submission = false;}

}

if (submission){

        $("label[for='submit']").html('You are ready to submit!');
    $('input:submit').attr('disabled',false);
}

 });

Это работает, но если я случайно снял флажок, кнопка отправки остается включенной ... Возможно, мне не хватает чего-то очевидного ...

Есть предложения?

Спасибо

Ответы [ 2 ]

2 голосов
/ 18 апреля 2011

В обработчике onchange вы проверяете, проверено ли что-нибудь, и активируете кнопку отправки, но вы забыли отключить ее, если проверка не удалась:

if (submission){
   $("label[for='submit']").html('You are ready to submit!');
   $('input:submit').attr('disabled',false);
} else {
   $("label[for='submit']").html('You are NOT ready to submit!');
   $('input:submit').attr('disabled',true);
}
1 голос
/ 18 апреля 2011

Ваш код:

if (submission){
    $("label[for='submit']").html('You are ready to submit!');
    $('input:submit').attr('disabled',false);
}

Это выполняется только в том случае, если отправка ложна, поэтому настройка не отключена. Рефакторинг:

if (submission){
    $("label[for='submit']").html('You are ready to submit!');
}
$('input:submit').attr('disabled',!submission);
...