使用jQuery通过复选框禁用/启用按钮
Disable / Enable button by checkbox using jQuery
如果未选中checkbox
,我想禁用我的button
。应至少检查一个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
。选中一个复选框时,它将被启用,未选中时,它会再次被禁用。但问题是,当我选中多个复选框并取消选中一个复选框时,它再次被禁用,尽管许多复选框仍然被选中。
您需要查看是否选中任何复选框来决定禁用状态。
您还应该使用prop
而不是attr
来确保跨浏览器兼容性。
$(function () {
$('.checkbox').click(function () {
$('#off').prop('disabled', !$('.checkbox:checked').length);
});
});
JSFiddle:http://jsfiddle.net/TrueBlueAussie/L72Lv6h1/
disabled
的prop
可以采用布尔标志值,因此不需要if else
。
与其检查是否选中了单击的复选框,不如检查是否选中任何复选框。您可以通过使用$('.checkbox:checked')
选中所有选中的复选框,然后检查返回的jQuery对象的长度来完成此操作。
$(function() {
$('.checkbox').click(function() {
if ($('.checkbox:checked').length > 0) {
$('#off').removeAttr('disabled');
} else {
$('#off').attr('disabled', 'disabled');
}
});
});
JSFiddle
相关文章:
- 根据字段的值启用按钮
- 输入昵称后启用按钮
- 如果没有任何输入,如何启用按钮
- 在动态添加的文本框中输入文本时启用按钮
- 在 asp.net 回发期间禁用和启用按钮
- 功能的禁用/启用按钮;不起作用
- 启用按钮不工作
- 选择2个选择标签后启用按钮
- KnockoutJS:基于数组启用按钮的长度
- 如果验证错误是有效的JAVASCRIPT,则启用按钮
- 如何在选中复选框时启用按钮
- 如何使用AngularJS在延迟后启用按钮
- 关闭弹出窗口后重新启用按钮
- 我如何才能等待使用casperjs启用按钮
- 等到所有脚本都完成,然后再启用按钮
- Jquery - 选中复选框时未启用按钮
- 禁用/启用按钮,当文本和文本区域为空时
- 在条件jquery上启用按钮/输入区域
- 禁用然后在jquery中启用按钮
- 如果文本字段 1 中的值大于文本字段 2,则启用按钮