我在这样的表格中有一个复选框列表以及一个按钮: -
<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
});
但是,每个复选框都需要更改事件来检查计数并启用或禁用该按钮,具体取决于计数&gt; 0或不。
或者是否有更简单的方法来实现我正在寻找的功能。
答案 0 :(得分:5)
你可以做到
$('#mytable input:checkbox').change(function(){
$("#jqb").prop("disabled", $('#mytable input:checkbox:checked').length ===0);
});
答案 1 :(得分:0)
它可以做你想要的:
$('#mytable input[type=checkbox]').click(function(){
if($('#mytable input[type=checkbox]:selected').size()) > 0) $("#jqb").attr('disabled', 'disabled');
else $('.someElement').removeAttr('disabled');
答案 2 :(得分:0)
if ($('#mytable :checkbox:checked').length) {
$('#jqb').prop('disabled', false); // Assumes disabled by default
}
答案 3 :(得分:0)
试试这个;
$("#jqb").prop("disabled", $("#mytable input:checkbox:checked']").length === 0);
答案 4 :(得分: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
}
});