javascript - 根据我的要求限制用户检查复选框

标签 javascript jquery

这是对之前 question 的补充

我的表格中有一堆复选框,我想根据以下规则限制用户检查复选框。

  1. 如果用户单击特定行中的任何一个复选框,我们必须以编程方式选中接下来的两个复选框(jquery)并取消选中(切换)。
  2. 将会有“阻止”按钮/复选框,如果用户单击“阻止”按钮,那么我们必须禁用该行中的所有复选框(已选中的除外)。
  3. 如果没有下两个可用的复选框(即未选中),我们会限制用户选中复选框。这是连续最后一个复选框的规则异常(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);
    }
});

Demo Fiddle

如果有人给我任何建议,这可能对我有帮助。

提前致谢。

最佳答案

终于我得到了答案, 在这里我发布我的答案,这对某人有帮助。

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);
    }
});

Working Fiddle

关于javascript - 根据我的要求限制用户检查复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20464660/

相关文章:

php - 在新窗口中输出打印结果

javascript - 根据 h1 文本设置选择值

javascript - 我通过 JQuery 单击显示了一堆图像 - 有什么简单的方法可以制作动画吗?

javascript - 从 HTML 中获取带有适当空格的文本

javascript - 关联图像未在缩略图列表中放大

javascript - 如何使用 Javascript 在 HTML 表格中查找第一个空行

javascript - 为什么我得到一个 {"location": null} when I try to convert a text/xml into an object?

javascript - 如何平息 Promise.all 响应

javascript - 当 http 获得分块响应时陷入无限重定向循环

javascript - jQuery:无限循环过程