2015-02-10 3 views
0

Я использую следующий код, чтобы проверить, сколько проверил пользователь checkbox.Подсчитайте, сколько checkbox было проверено

var empty_watch = $('#clocks').find('input.checkbox:checked').length; 

Это используется в проверке формы: если empty_watch равно 0, то не публикуйте формы: пользователь должен выбрать по крайней мере один элемент (а не по умолчанию один).

HTML выглядит следующим образом:

<div id="clocks" class="sez-form"> 
<fieldset> 
<legend> Orologi inclusi </legend> 
<div class="percheckbox"> 
    <input class="clock" type="checkbox" value="1" name="orologio">Browser 
</div> 
<div class="percheckbox"> 
    <input class="clock" type="checkbox" value="2" name="orologio">Prototipo1 
</div> 
<div class="percheckbox"> 
    <input class="clock" type="checkbox" value="3" name="orologio">test FP 
</div> 
<br style="clear: both;"> 
</fieldset> 
</div> 

Даже если я проверю все галочки empty_watch по-прежнему 0. Что я делаю не так?

+0

Ключевого вопрос: * когда * вы проверка 'пустое watch'? :) –

ответ

5

Ваш Селектор находка:

'input.checkbox:checked' 

ищет вход с классом 'флажком'. Вы должны смотреть на атрибут 'type' элемента.

Вместо этого попробуйте:

'input[type="checkbox"]:checked' 
+0

Да, вы правы. Я был не прав в выборе объекта. Спасибо! –

2

Существует специальный селектор :checkbox псевдо. Он делает то же самое, как input[type=checkbox]:

var empty_watch = $('#clocks').find(':checkbox:checked').length; 

Как вы уже нацелены #clock то найти, то это будет очень хорошая скорость мудрый тоже.

Вы можете уменьшить его немного, к следующему, если вы знаете, что нет других чековых входов:

var empty_watch = $('#clocks').find(':checked').length;