这是对之前 question 的补充
我的表格中有一堆复选框,我想根据以下规则限制用户检查复选框。
- 如果用户单击特定行中的任何一个复选框,我们必须以编程方式选中接下来的两个复选框(jquery)并取消选中(切换)。
- 将会有“阻止”按钮/复选框,如果用户单击“阻止”按钮,那么我们必须禁用该行中的所有复选框(已选中的除外)。
- 如果没有下两个可用的复选框(即未选中),我们会限制用户选中复选框。这是连续最后一个复选框的规则异常(exception)(用户可以检查连续最后一个复选框)。
在这里,我已经使用了 1 和 2 条规则,但对于第三条规则我没有任何想法。
Jquery
$('.grp:checkbox').change(function () {
var obj = $(this).parent().nextAll("td").slice(0, 2);
if ($(this).is(":checked")) {
//$(this).removeClass('grp');
obj.find(":checkbox").prop('checked', true);
obj.find(":checkbox").prop('disabled', true);
} else {
obj.find(":checkbox").prop('checked', false);
obj.find(":checkbox").prop('disabled', false);
}
});
$('.block').change(function (e) {
var obj = $(this).parent().nextAll("td");
if ($(this).is(":checked")) {
obj.find(":checkbox").prop('checked', true).prop('disabled', true);
} else {
obj.find(":checkbox").prop('checked', false).prop('disabled', false);
}
});
如果有人给我任何建议,这可能对我有帮助。
提前致谢。
最佳答案
终于我得到了答案, 在这里我发布我的答案,这对某人有帮助。
Jquery
$('.adj :checkbox').change(function () {
//alert('1');
var obj = $(this).parent().nextAll("td").slice(0, 2);
if ($(this).is(":checked") && $(this).hasClass("grp")) {
//alert('2');
if (obj.find(".grp:checkbox").hasClass("grp")) {
var i = $(this).attr("id");
//alert(i);
$(this).addClass(i);
$(this).toggleClass('grp bkd');
obj.find(".grp:checkbox").prop('checked', true).addClass(i);
obj.find(".grp:checkbox").prop('disabled', true).toggleClass('grp bkd');
} else {
$(this).prop('checked', false);
}
} else {
var id = $(this).attr("id");
$(this).removeClass(id);
$(this).toggleClass('grp bkd');
obj.find("." + id + ":checkbox").prop('checked', false);
obj.find("." + id + ":checkbox").prop('disabled', false).toggleClass('grp bkd').removeClass(id);
}
});
$('.block').change(function (e) {
var obj = $(this).parent().nextAll("td");
if ($(this).is(":checked")) {
obj.find(".grp:checkbox").prop('checked', true).prop('disabled', true);
} else {
obj.find(".grp:checkbox").prop('checked', false).prop('disabled', false);
}
});
关于javascript - 根据我的要求限制用户检查复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20464660/