【问题标题】:jQuery: check / uncheck checkboxesjQuery:选中/取消选中复选框
【发布时间】:2014-07-22 21:15:05
【问题描述】:

我有两个 div。 Div A 和 Div B。当您单击一个时,Div A 包含锚点,它会显示我从 Div B 中的数组中获得的复选框列表。我有一个限制,用户只能从他可以选择的所有列表中选择三个复选框通过点击锚点获得。

如果超过 2 个未选中的复选框被禁用,我有一个限制。

if (countShownCats > -1 && countShownCats < 3) {
     // Enable checkboxes
     $('.rbSubcategoryList input:checkbox:not(:checked)').attr('disabled', false);
  } else {
     // Disable non checked checkboxes
     $('.rbSubcategoryList input:checkbox:not(:checked)').attr('disabled', true);
  }

当我单击一个锚点并附加一个复选框列表时,不会选中复选框。代码如下:

$('.rbSubcategoryList input[value="' + rbCheckboxValue + '"]').attr('checked', true);

但只有第一个被点击的复选框被选中。我知道我必须以某种方式使用 $.each,但不知道如何使用。

所以我的问题是如何让它工作,以便当我点击锚点时所有三个选中的复选框都保持选中状态?

谢谢!

【问题讨论】:

  • 请分享 jsfiddle 链接
  • 由于某种原因,这个函数$('.rbSubcategoryList input:checkbox').live('change', function () { 在 jsfiddle 中不起作用。这是将块添加到 Div C 的部分。这是链接:link
  • 使用.on()而不是.live(),因为.live()不适用于1.6以上的jquery
  • .live() 在网站上为我工作,.on() 在网站上不工作,在 jsfiddle 上也不工作:/
  • 你使用的jquery版本是什么?

标签: jquery checkbox each


【解决方案1】:

好的,我想我现在明白了。

您没有遍历 .rbWwCatPicked 中的隐藏输入,这就是为什么只选中一个复选框的原因。

   $('.rbWwCatPicked input[type=hidden]').each(function(){
       $('.rbSubcategoryList input[value="' + $(this).data('pickedcat-hidden') + '"]').prop('checked', true);
   });

和更新的小提琴: http://jsfiddle.net/T5858/17/


抱歉没有正确阅读问题。

试试这个:

$('.rbSubcategoryList').click(function () {
  var c = $(this).find('input:checkbox:checked').length;
  if (c >= 2) {
    $(this).find('input:checkbox:not(:checked)').prop('disabled', true);
  } else {
    $(this).find('input:checkbox:not(:checked)').prop('disabled', false);
  }
});

这是小提琴: http://jsfiddle.net/p8zZu/

您的 JavaScript 似乎也存在一些问题。检查浏览器控制台中记录的错误。


如果我理解正确,您是在寻求有关使用 each 方法的帮助吗?

试试

$('.rbSubcategoryList input[value="' + rbCheckboxValue + '"]').each(function () {
  $(this).prop('checked', true);
});

【讨论】:

  • 谢谢你,这让代码很平静 :) 无论如何,这不是主要问题。如果在这里查看我的链接http://jsfiddle.net/alexchizhov/T5858/4/。当您单击.rbSubcategoryList 中的复选框时,它会在下方附加一个橙色块。因此,当我单击 3 个复选框时,所有未选中的复选框都被禁用。但是当我单击第一个块中的锚点时,它们都被再次取消选中。它只检查被点击的第一个复选框。当我单击第一个块中的锚点时,我需要脚本来检查所有三个:)
猜你喜欢
  • 2013-01-24
  • 2018-02-03
  • 1970-01-01
  • 1970-01-01
  • 2013-09-29
  • 2016-12-23
  • 2011-10-26
相关资源
最近更新 更多