jQuery - 多个条件禁用复选框

时间:2011-04-20 05:42:13

标签: jquery

这与我提出的另一个问题相关,但更复杂(问题在于jQuery - Able to disable checkboxes on condition, but odd problem

我现在有工作代码根据选择框选择禁用复选框:http://jsfiddle.net/gDHGY/2/

上面链接中的代码将根据成绩级别禁用复选框。我需要根据其他复选框选择进一步禁用复选框。例如,如果切换了带有“am”和“week1”类的复选框,则需要禁用所有其他“am week1”复选框。全天也有另一个叫“满”的课程。另一个例子是:如果选中了一个类为“full week1”的复选框,我需要禁用“am week1”和“pm week1”复选框。营地总共有6周,只有AM,PM和全天选项。我真的希望一切都有意义。如果不是通过任何方式让我知道,我会尝试更好地解释。

是否可以修改我必须执行此操作的代码,或者我是否正在使用辅助代码来完成此操作?

编辑#2:再次更新上面的jsFiddle链接。

更新#1:Ian的代码运行良好我只需要弄清楚如何在页面加载时检查复选框时使其运行相同的功能。

2 个答案:

答案 0 :(得分:2)

请检查我的解决方案。希望这会有所帮助:)

http://jsfiddle.net/gDHGY/3/

答案 1 :(得分:0)

通过查看您的代码,我认为您需要的是将事件绑定到您的复选框:

$('input[type=checkbox]').click(function() {
    var classList = $(this).attr('class').replace(/\s+/g, ".");
    if ($(this).attr('checked')) {
        $('input.' + classList).attr('disabled', 'true');
        $(this).removeAttr('disabled');
    } else {
        $('input.' + classList).removeAttr('disabled', 'true');   
    }
});

这不会完全解决你的问题,因为它只会禁用完全相同的类(即选择完整的week1不会禁用on week1类),但是在classList上的一些regexp来改变它所寻找的应该为你解决的问题(对不起 - 我自己也会这样做,但咖啡因今天早上还没有被踢过)