Кнопка включения / выключения основана на количестве отмеченных флажков с разными идентификаторами - PullRequest
4 голосов
/ 15 марта 2012

У меня есть список флажков в таблице, как это, вместе с кнопкой: -

<table id="mytable">
<tr><th>checked</th><th>id</th><th>text</th></tr>
<tr><td><input id="cb1" type="checkbox" name="checker1"/></td><td>123</td><td>abc</td></tr>
<tr><td><input id="cb2" type="checkbox" name="checker2"/></td><td>456</td><td>def</td></tr>
<tr><td><input id="cb3" type="checkbox" name="checker3"/></td><td>789</td><td>ghi</td></tr>
<tr><td><input id="cb4" type="checkbox" name="checker4"/></td><td>454</td><td>ghi</td></tr>
<tr><td><input id="cb5" type="checkbox" name="checker5"/></td><td>565</td><td>ghi</td></tr>
</table>

<input type="button" name="myjqbutton" value="My Jquery Button" id="jqb" disabled="true"/>

Я хочу только включить эту кнопку, только если установлен один или несколько флажков.

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

var mytable= document.getElementById('mytable');
$('input:checkbox:checked', mytable).each(function() {
// whatever here
});

Однако каждый флажок будетМне нужно изменить событие, чтобы проверить счетчик и включить или отключить кнопку в зависимости от того, есть ли счет> 0 или нет.

Или есть более простой способ достижения этой функции, которую я ищу.

Ответы [ 5 ]

5 голосов
/ 15 марта 2012

Вы могли бы сделать

$('#mytable input:checkbox').change(function(){
  $("#jqb").prop("disabled", $('#mytable input:checkbox:checked').length ===0);
}); 
0 голосов
/ 15 марта 2012

change событие является обязательным, но jQuery предоставляет сложный селектор для сокращения работы по подсчету проверенных:

$(':checkbox').change(function(e) {
    // for a performance considerationg, to reduce selector lookup, 
    // once a checkbox is checked itself, there must be one or more checkbox checked
    // then the selector finds checked checkbox whose id attribute starts with "cb"
    if (this.checked || $(':checkbox[id^="cb"]:checked).length >= 1) {
        // do stuff
    }
});
0 голосов
/ 15 марта 2012

Попробуйте это;

 $("#jqb").prop("disabled", $("#mytable input:checkbox:checked']").length === 0);
0 голосов
/ 15 марта 2012
if ($('#mytable :checkbox:checked').length) {
    $('#jqb').prop('disabled', false); // Assumes disabled by default
}
0 голосов
/ 15 марта 2012

Может делать что хочешь:

$('#mytable input[type=checkbox]').click(function(){
if($('#mytable input[type=checkbox]:selected').size()) > 0) $("#jqb").attr('disabled', 'disabled');
else $('.someElement').removeAttr('disabled');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...