jquery - 复选框禁用启用

标签 jquery checkbox

我目前有一个 jQuery 函数,如果未选中父复选框,则禁用复选框列表,并在选中父复选框时启用复选框列表。但是,“父”复选框默认为取消选中,这是我想要的。

这会导致代码出现问题,因为它在页面加载时启用,并且只有在选中和取消选中父复选框时才会禁用。

有人知道解决办法吗?

$(document).ready(function() {
    $('#cbsys').bind('click', function() {
        var doEnable = ($('#cbsys:checked').length > 0);
        $('#syscbl').each(function() {
            if (doEnable) {
                $(this).attr('disabled', null);
                $(this).parents('label').removeClass('cssDisabled');
            } else {
                $(this).attr('disabled', 'disabled');
                $(this).parents('label').addClass('cssDisabled');
            }
        });
    });
});

最佳答案

只需将其缓存为函数,并在文档准备好以及单击时运行它。我还对您的代码进行了一些优化:

function disableCk() {
  var doEnable = $('#cbsys:checked').length; // <-- use a class
  $('#syscbl').each(function() { // <-- use a class
    var $this = $(this);
    if (doEnable) {
      $this.prop('disabled', false)
        .parents('label')
        .removeClass('cssDisabled');
    }
    else {
      $this.prop('disabled', true)
        .parents('label')
        .addClass('cssDisabled');
    }
  });
}

$(document).ready(function() {
  disableCk();
  $('#cbsys').on('click', disableCk);
});

编辑

刚刚注意到您似乎使用了多个同名的 id,这是无效的 HTML,请确保使用类。我在代码中添加了注释,请看上面。

关于jquery - 复选框禁用启用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11854306/

相关文章:

javascript - 单击按钮以启用复选框,按钮消失

javascript - jQuery 表单验证仅适用于一次问题

android - Android 中错误的复选框选择?

php - 从数据库中的多个复选框保存数据

javascript - Bootstrap 折叠滚动到底部问题

javascript - Node.js:客户端模板与服务器端模板

php - 单击链接时使用 JQUERY 和 PHP 更新 mysql

javascript - JS,选中特定表单内的所有复选框,页面上的几个表单

javascript - 一种输入 - 两种风格?左侧光标 :text, 右侧光标 :pointer?

javascript - 将鼠标悬停在列表上时更改下拉列表颜色