2012-03-15 11 views
3

私はボタンと一緒に、このようなテーブルのチェックボックスのリストを持っていると、すべてのチェックボックスをチェックする/有効にする: -複数のカウントに基づい無効]ボタンは、異なるIDの

<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"/> 

私は何をしたいのかのみであり、 1つ以上のチェックボックスがオンになっている場合は、ボタンを有効にします。

初期の考えでは、テーブルにチェックインされているチェックボックスの数をカウントする必要があるということです。これらを変数に数えるために.eachを使って行うことができます。

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

しかし、各チェックボックスは、カウントをチェックし、カウント> 0か否かによって、ボタンを有効または無効に変更されたイベントが必要になります。

または、私が探しているこの機能を実現する簡単な方法があります。

答えて

4

あなたは

$('#mytable input:checkbox').change(function(){ 
    $("#jqb").prop("disabled", $('#mytable input:checkbox:checked').length ===0); 
}); 
+2

+1最良かつ最も完全なソリューションこれまで! :) – Stefan

0

それはあなたがやりたいことがあります。

$('#mytable input[type=checkbox]').click(function(){ 
if($('#mytable input[type=checkbox]:selected').size()) > 0) $("#jqb").attr('disabled', 'disabled'); 
else $('.someElement').removeAttr('disabled'); 
0
if ($('#mytable :checkbox:checked').length) { 
    $('#jqb').prop('disabled', false); // Assumes disabled by default 
} 
0

、このいずれかを試してみてくださいを行うことができます。

$("#jqb").prop("disabled", $("#mytable input:checkbox:checked']").length === 0); 
0

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 
    } 
}); 
関連する問題