Javascript 许多复选框中的一个应始终保持未选中状态

Javascript 许多复选框中的一个应始终保持未选中状态,javascript,jquery,checkbox,Javascript,Jquery,Checkbox,有很多关于JavaScript和条件复选框的主题,但我没有找到一个与我的案例相匹配的 我的用例:我已经生成了很多行,每行都有复选框,假设数字是n。现在,用户应该只能检查其中的n-1。换句话说,当我们有4个复选框并且选中了4个复选框中的3个时,最后一个复选框应该被禁用。如果只选中了4个复选框中的2个,则所有复选框都可用 我试过: var $checks = $('input:checkbox').click(function (e) { var numChecked = $chec

有很多关于JavaScript和条件复选框的主题,但我没有找到一个与我的案例相匹配的

我的用例:我已经生成了很多行,每行都有复选框,假设数字是
n
。现在,用户应该只能检查其中的
n-1
。换句话说,当我们有4个复选框并且选中了4个复选框中的3个时,最后一个复选框应该被禁用。如果只选中了4个复选框中的2个,则所有复选框都可用

我试过:

var $checks = $('input:checkbox').click(function (e) {
        var numChecked = $checks.filter(':checked').length;
        var lastUnchecked = $checks.prop('checked', false);

        if (numChecked = $checks.length - 1) {
            lastUnchecked.disabled = true;
        }
        else {
            //enable checkbox that was disabled before
            lastUnchecked.disabled = false;
        }
    });

但这不起作用,因为
var lastucked=$checks.prop('checked',false)返回所有复选框,而不仅仅是未选中的

尝试在用户每次选中其中一个复选框时计数选中的项目:

$(document).on('change','.chk',function()){
var,该值=$(此值);
Var Par=最接近(UL);
Valax max = PAR.find(‘.CHK’)。长度为1;
VaR检查= PAR.find(‘.CHK’)。过滤器(“:检查”)。长度;
如果(选中<最大值){
找到(‘CHK’)。道具(‘残疾人’,‘’’);
}否则{
找到((.CHK))不(“:检查”)支柱(“残疾人”,“残疾人”);
}               
});

  • 复选框
  • 复选框
  • 复选框
  • 复选框
  • 复选框

每次用户检查其中一项时,请尝试计数已检查的项目:

$(document).on('change','.chk',function()){
var,该值=$(此值);
Var Par=最接近(UL);
Valax max = PAR.find(‘.CHK’)。长度为1;
VaR检查= PAR.find(‘.CHK’)。过滤器(“:检查”)。长度;
如果(选中<最大值){
找到(‘CHK’)。道具(‘残疾人’,‘’’);
}否则{
找到((.CHK))不(“:检查”)支柱(“残疾人”,“残疾人”);
}               
});

  • 复选框
  • 复选框
  • 复选框
  • 复选框
  • 复选框
试试这个

逻辑:更改时,首先重新/启用所有复选框。然后根据检查的数量重新确定是否需要禁用任何

var table = $('table'), cbs = $(':checkbox');
table.on('change', ':checkbox', function(evt) {
    cbs.prop('disabled', false);
    if (cbs.filter(':checked').length == cbs.length - 1) 
        cbs.not(':checked').prop('disabled', 1);
})
.

试试这个

逻辑:更改时,首先重新/启用所有复选框。然后根据检查的数量重新确定是否需要禁用任何

var table = $('table'), cbs = $(':checkbox');
table.on('change', ':checkbox', function(evt) {
    cbs.prop('disabled', false);
    if (cbs.filter(':checked').length == cbs.length - 1) 
        cbs.not(':checked').prop('disabled', 1);
})
.

这更简单

$(document).ready(function(){
  var numBox;

  var $checks = $('input:checkbox').click(function (e) {
      var numChecked = $checks.filter(':checked').length;

      if (numChecked < numBox - 1) {
        $checks.filter(':disabled').prop('disabled', false);
      } else {
        $checks.not(':checked').prop('disabled', true);
      }
  });

  numBox = $check.length;
});
$(文档).ready(函数(){
麻木变种;
var$checks=$('input:checkbox')。单击(函数(e){
var numChecked=$checks.filter(':checked').length;
如果(numChecked
这更简单

$(document).ready(function(){
  var numBox;

  var $checks = $('input:checkbox').click(function (e) {
      var numChecked = $checks.filter(':checked').length;

      if (numChecked < numBox - 1) {
        $checks.filter(':disabled').prop('disabled', false);
      } else {
        $checks.not(':checked').prop('disabled', true);
      }
  });

  numBox = $check.length;
});
$(文档).ready(函数(){
麻木变种;
var$checks=$('input:checkbox')。单击(函数(e){
var numChecked=$checks.filter(':checked').length;
如果(numChecked
你能分享可执行的演示/代码片段吗?听起来你的逻辑颠倒了。也许你可以使用单选按钮让用户选择他们不想要的项目。如果(numChecked=$checks.length-1)
是一个赋值,而不是一个比较<代码>=
为comparison@Mark-您将如何选择4个单选按钮中的3个?您可以共享可执行的演示/代码片段吗?听起来您的逻辑颠倒了。也许你可以使用单选按钮让用户选择他们不想要的项目。如果(numChecked=$checks.length-1)
是一个赋值,而不是一个比较<代码>=为comparison@Mark-如何选择4个单选按钮中的3个?