禁用一组基于“禁用”的复选框;数据属性“;并禁用属性
Disable a group of checkboxes based on "Data attributes" and disabled-attribure
我有以下一组复选框:
<input class="lvl" type="checkbox" data-groupid="1" data-multichoice="1" checked />
<input class="lvl" type="checkbox" data-groupid="1" data-multichoice="1" />
<input class="lvl" type="checkbox" data-groupid="1" data-multichoice="1" />
<br />
<input class="lvl" type="checkbox" data-groupid="2" data-multichoice="0" />
<input class="lvl" type="checkbox" data-groupid="2" data-multichoice="0" />
<input class="lvl" type="checkbox" data-groupid="2" data-multichoice="0" checked />
<input class="lvl" type="checkbox" data-groupid="2" data-multichoice="0" />
<br />
<input class="lvl" type="checkbox" data-groupid="3" data-multichoice="1" />
<input class="lvl" type="checkbox" data-groupid="3" data-multichoice="1" checked />
<input class="lvl" type="checkbox" data-groupid="3" data-multichoice="1" />
<input class="lvl" type="checkbox" data-groupid="3" data-multichoice="1" />
<br />
<input class="lvl" type="checkbox" data-groupid="4" data-multichoice="0" />
<input class="lvl" type="checkbox" data-groupid="4" data-multichoice="0" />
<input class="lvl" type="checkbox" data-groupid="4" data-multichoice="0" />
<input class="lvl" type="checkbox" data-groupid="4" data-multichoice="0" />
我需要禁用所有具有class="lvl"
和data-multichoice="0"
IF的复选框此组中已经选中了一个复选框。因此,将上述场景转换为:
<input class="lvl" type="checkbox" data-groupid="1" data-multichoice="1" checked />
<input class="lvl" type="checkbox" data-groupid="1" data-multichoice="1" />
<input class="lvl" type="checkbox" data-groupid="1" data-multichoice="1" />
<br />
<input class="lvl" type="checkbox" data-groupid="2" data-multichoice="0" disabled />
<input class="lvl" type="checkbox" data-groupid="2" data-multichoice="0" disabled />
<input class="lvl" type="checkbox" data-groupid="2" data-multichoice="0" checked />
<input class="lvl" type="checkbox" data-groupid="2" data-multichoice="0" disabled />
<br />
<input class="lvl" type="checkbox" data-groupid="3" data-multichoice="1" />
<input class="lvl" type="checkbox" data-groupid="3" data-multichoice="1" checked />
<input class="lvl" type="checkbox" data-groupid="3" data-multichoice="1" />
<input class="lvl" type="checkbox" data-groupid="3" data-multichoice="1" />
<br />
<input class="lvl" type="checkbox" data-groupid="4" data-multichoice="0" />
<input class="lvl" type="checkbox" data-groupid="4" data-multichoice="0" />
<input class="lvl" type="checkbox" data-groupid="4" data-multichoice="0" />
<input class="lvl" type="checkbox" data-groupid="4" data-multichoice="0" />
有什么想法吗?
试试这个
$('.lvl[data-multichoice="0"]').not(':checked').prop('disabled', true);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input class="lvl" type="checkbox" data-groupid="1" data-multichoice="1" checked />
<input class="lvl" type="checkbox" data-groupid="1" data-multichoice="1" />
<input class="lvl" type="checkbox" data-groupid="1" data-multichoice="1" />
<br />
<input class="lvl" type="checkbox" data-groupid="2" data-multichoice="0" />
<input class="lvl" type="checkbox" data-groupid="2" data-multichoice="0" />
<input class="lvl" type="checkbox" data-groupid="2" data-multichoice="0" checked />
<input class="lvl" type="checkbox" data-groupid="2" data-multichoice="0" />
<br />
<input class="lvl" type="checkbox" data-groupid="3" data-multichoice="1" />
<input class="lvl" type="checkbox" data-groupid="3" data-multichoice="1" checked />
<input class="lvl" type="checkbox" data-groupid="3" data-multichoice="1" />
<input class="lvl" type="checkbox" data-groupid="3" data-multichoice="1" />
上面的答案是正确的,这只是在所有输入都未选中时重新启用该组所有输入的另一种方法。
$(document).ready(function(){
var $inputs = $(".lvl");
function checkInput(){
if( $('.lvl[data-groupid="2"]:checked').length > 0) {
$('.lvl[data-groupid="2"]').not(':checked').prop('disabled', true);
} else {
$('.lvl[data-groupid="2"]').not(':checked').prop('disabled', false);
}
}
// watch input change event
$inputs.change(function() {
checkInput();
});
// check inputs on DOM ready
checkInput();
});
编辑
根据建议,如果您希望每组有一个选项,则可能需要使用Radios。这将使你的收音机像复选框一样,并切换属性为的收音机的状态
data-multichoice='0'
如果存在已选中的复选框在该组中
var $inputs = $(".lvl");
$inputs.click(function() {
var previousValue = $(this).attr('previousValue');
// Make radios act like checkbox for same group
var inputGroup = $("input[name="+ $(this).attr('name') +"]:radio");
// Toggle Disable attr for radios of same group + data-multichoice="0"
var targerGroup = $("input[name="+ $(this).attr('name') +"][data-multichoice='0']:radio");
if (previousValue == 'checked')
{
$(this).removeAttr('checked');
$(this).attr('previousValue', false);
targerGroup.not(':checked').prop('disabled', false);
}
else
{
inputGroup.attr('previousValue', false);
$(this).attr('previousValue', 'checked');
targerGroup.not(':checked').prop('disabled', true);
}
});
<input class="lvl" type="radio" name="group1" data-groupid="1" data-multichoice="1" checked />
<input class="lvl" type="radio" name="group1" data-groupid="1" data-multichoice="1" />
<input class="lvl" type="radio" name="group1" data-groupid="1" data-multichoice="1" />
<input class="lvl" type="radio" name="group2" data-groupid="2" data-multichoice="0" disabled />
<input class="lvl" type="radio" name="group2" data-groupid="2" data-multichoice="0" disabled />
<input class="lvl" type="radio" name="group2" data-groupid="2" data-multichoice="0" checked />
<input class="lvl" type="radio" name="group2" data-groupid="2" data-multichoice="0" disabled />
<input class="lvl" type="radio" name="group3" data-groupid="3" data-multichoice="1" />
<input class="lvl" type="radio" name="group3" data-groupid="3" data-multichoice="1" checked />
<input class="lvl" type="radio" name="group3" data-groupid="3" data-multichoice="1" />
<input class="lvl" type="radio" name="group3" data-groupid="3" data-multichoice="1" />
<input class="lvl" type="radio" name="group4" data-groupid="4" data-multichoice="0" />
<input class="lvl" type="radio" name="group4" data-groupid="4" data-multichoice="0" />
<input class="lvl" type="radio" name="group4" data-groupid="4" data-multichoice="0" />
<input class="lvl" type="radio" name="group4" data-groupid="4" data-multichoice="0" />
相关文章:
- 更改无法正常工作的复选框的属性
- 如何通过jquery/ajax将复选框数据作为数组发送到php脚本
- 如何使用 javascript 将复选框数据传递到文本区域
- 显示或隐藏基于复选框数据的 HTML 列表,Laravel 4
- 如何保存和访问复选框数据 HTML
- Jquery attr 无法正常工作复选框必需属性
- jQuery - 复选框数据发布到 php
- 加载 DOM 后无法读取动态创建的复选框的属性
- 引导数据切换单选按钮/复选框选中属性
- 路由加载时运行成员控制器函数以设置控制复选框的属性
- 在adobeacrobat中获取用户的复选框数据并检查动态戳记
- Jquery复选框数据属性条件的问题
- 从复选框数据值更新总数
- 在ie10中以编程方式设置复选框选中属性
- 如何使用jquery's prop()来设置复选框的属性?
- 选中复选框设置属性,否则删除属性
- 将复选框数据属性与输入值相乘
- 如何使用javascript检索复选框的属性值?
- 复选框's选中属性绑定-聚合物
- 复选框禁用属性绑定到聚合物属性的子属性