检查/取消选中复选框列表jquery

时间:2013-08-07 07:47:47

标签: jquery checkbox checkboxlist

请检查以下给定的小提琴手。

http://jsfiddle.net/ymtwK/3/

我希望在选中一个时禁用所有其他...在创建的提琴手上按预期工作。但当我取消选中已经选中的那个时,我希望所有这些都被启用...

我的代码出了什么问题。请帮我修理一下。

我也想知道是否有任何关于unlick事件的内容......

下面是我的代码..

$(".session_outcome_chk_list").click(function () {
    $('.session_outcome_chk_list').each(function () {
        if ($(this).is(":checked")) {
            $(this).removeAttr("disabled");
        } else {
            $(this).attr("disabled", true);
        }
    });
});

编辑:

我还要求在页面加载时执行相同的操作,例如在选择一个复选框时提交,在formload上也应检查天气是否选中,然后执行禁用。

管理表单的更新方案,其中您已经在页面加载时选择了一个项目。

http://jsfiddle.net/ymtwK/17/

2 个答案:

答案 0 :(得分:4)

您可以使用一行代码执行此操作:

$('.session_outcome_chk_list').not(this).prop('disabled', this.checked);

此外,您应该绑定change()事件,而不是click(),以便在通过除点击之外的方法更改复选框的状态时执行代码(按键,例子)。

Here's a fiddle


编辑:如果您希望代码在首次加载页面时运行,只需在绑定后触发事件(您还必须修改该函数才能使其正常工作) ):

$('.session_outcome_chk_list').change(function () {
    $('.session_outcome_chk_list').not(':checked').prop('disabled', !!$('.session_outcome_chk_list:checked').length);
}).change(); // <-- triggers the change event

Here's another fiddle

答案 1 :(得分:3)

试试这个

DEMO

$(".session_outcome_chk_list").click(function () {
    var current=$(this);
    if (current.is(":checked")) {
         $('.session_outcome_chk_list').attr("disabled", true);
         current.removeAttr("disabled");
    }
    else {
         $('.session_outcome_chk_list').attr("disabled", false);
    }
});