2011-12-23 7 views
1

Как проверить флажки с помощью JQuery? Мне нужно убедиться, что в каждой группе выбран хотя бы один флажок. Я хотел бы использовать класс, чтобы определить группы, а значит, HTML будет выглядеть следующим образом:JQuery Несколько checkbox Groups Validation

<!-- checkbox group --> 
<fieldset class="CbxGroup"> 
    <legend>Checkbox Group (required)</legend> 
    <label><input type="checkbox" name="cbxGroup1[]" value="one" id="cbxGroup1_0">One </label> 
    <br> 
    <label><input type="checkbox" name="cbxGroup1[]" value="two" id="cbxGroup1_1">Two </label> 
    <br> 
    <label><input type="checkbox" name="cbxGroup1[]" value="three" id="cbxGroup1_2">Three</label> 
    <br> 
    <label><input type="checkbox" name="cbxGroup1[]" value="four" id="cbxGroup1_3">Four </label> 
    <br> 
    <label><input type="checkbox" name="cbxGroup1[]" value="five" id="cbxGroup1_4">Five </label> 
    <br> 
</fieldset> 

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

Спасибо!

$('.CbxSingle').each(function() { 
     var CbxCheck = $(this); 
     if(!CbxCheck.is(':checked')) { 
      // do something 
     } 
     else{ 
      // do something else 
     } 
    }); 

Я хотел бы что-то вроде следующего, что бы проверки каждой группы отдельно:

$('.CbxGroup').each(function() { 
     if ($('input[type=checkbox]:checked').length == 0) { 
      alert('not selected!'); 
     } 
     else{ 
      alert('selected!'); 
     } 
    }); 

ответ

3

Возможно, что-то подобное может работать:

if($(".CbxSingle input[type=checkbox]:checked").length != 0){ 
    // Run success code 
}else{ 
    // Run failure code 
} 

Существует на самом деле очень похожи ссылки на веб-сайте документации jQuery для: проверенного селектора: http://api.jquery.com/checked-selector/

Надеюсь, что это поможет!

+0

Спасибо! Это было именно то, что мне нужно. Я думал, что это будет очень сложно, но оказалось, что это так просто. – user1002039

+0

Упс! Я говорил слишком рано. Если я добавлю еще одну группу флажков, она проверяет их как одну группу, а не две отдельные. Любая идея, как я могу тикать ее, чтобы она проверяла каждую группу отдельно? . – user1002039

+0

$ (». McCbxGroup ') каждая (функция() { \t \t \t если ($ ('. Ввод [тип = Флажок]: проверено ') длина == 0) { \t \t оповещения (' не выбран! '); \t \t} \t \t еще { \t \t \t \t оповещения (' выбран! '); \t \t \t} \t \t}); – user1002039

2

Это может работать для того, что вы описали:

var numberChecked=$("input[name='cbxGroup1[]']:checked").length; 
if(numberChecked<1) 
    alert('none checked'); 
else 
    alert(numberChecked+' checked); 
+0

Это также позволит вам иметь несколько групп флажков, просто измените имя флажков, и вы можете повторно использовать код в своей форме. –

+0

Я не думаю, что это сработает. Мне нужно идентифицировать группы с именем класса. Это означает, что мне нужно определить все флажки внутри группы и убедиться, что выбран хотя бы один. Таким образом, у меня может быть несколько групп, и все они проверяются одинаково, не записывая код для каждой группы отдельно. – user1002039

+0

Вы можете изменить имя для всех групп. Итак, это для cbxGroup1 [], если у вас есть cbxGroup2 [], а затем сделайте другую переменную для тех, которые были проверены. Вот скрипка для вас, чтобы увидеть ее в действии: http://jsfiddle.net/Ygcc8/ –

0

Я создал небольшой variation as a fiddle, и это, кажется, работает хорошо. Я думаю, ваша проблема в том, что класс .CbxSingle не применяется к input s, поэтому вы можете использовать другой селектор, такой как .CbxGroup input[type=checkbox].

+0

Код, указанный выше для отдельных флажков, отлично работает. Это не для групп флажков, которые мне нужны, поэтому я могу иметь несколько групп без написания отдельного кода для каждого. – user1002039

+0

Попробуйте заменить '$ ('. CbxSingle')' в вашем фрагменте JavaScript с помощью '$ ('. CbxGroup input [type = checkbox]')'. – sczizzo