如果未选中button
,我想停用checkbox
。应至少检查一个checkbox
以启用该按钮。
我的HTML:
<table border="1">
<tr>
<th></th>
<th>Name</th>
</tr>
@foreach($clients as $client)
<tr>
<td><input type="checkbox" name="status[]" value="$client['id']" class="checkbox"></td>
<td>{{ $client['name'] }}</td>
</tr>
@endforeach
</table>
<button type="button" id="off" class="btn btn-default" data-toggle="modal" data-target="#offer" disabled>Choose New Offer</button>
我尝试了这个jQuery代码:
<script>
$(function() {
$('.checkbox').click(function() {
if ($(this).is(':checked')) {
$('#off').removeAttr('disabled');
} else {
$('#off').attr('disabled', 'disabled');
}
});
});
</script>
默认情况下,该按钮为disabled
。选中一个复选框后,如果未选中,则会再次禁用该复选框。但问题是,当我选中多个复选框并取消选中一个复选框时,它会再次禁用,但仍会检查许多复选框。
答案 0 :(得分:4)
不检查是否选中了单击的复选框,而应检查是否选中了任何复选框。您可以通过选中$('.checkbox:checked')
的所有选中复选框,然后检查返回的jQuery对象的长度来执行此操作。
$(function() {
$('.checkbox').click(function() {
if ($('.checkbox:checked').length > 0) {
$('#off').removeAttr('disabled');
} else {
$('#off').attr('disabled', 'disabled');
}
});
});
答案 1 :(得分:4)
您需要查看是否检查了任何复选框,以便对禁用状态做出决定。
您还应该使用prop
而不是attr
来确保跨浏览器兼容性。
$(function () {
$('.checkbox').click(function () {
$('#off').prop('disabled', !$('.checkbox:checked').length);
});
});
JSFiddle: http://jsfiddle.net/TrueBlueAussie/L72Lv6h1/
prop
的{{1}}可以使用布尔标记值,因此不需要disabled
。