将复选框限制为jQuery中的连续设置

时间:2012-11-09 17:31:10

标签: jquery checkbox limit

我想做这样的事情:Limit Checkbox amount

但稍有改变。我希望复选框也必须是连续的。

小例子:

如果我有10个复选框,并且我的限制是3,那么用户只能检查第一,第二和第三;或第三,第四,第五。不是第一,第三,第四。

2 个答案:

答案 0 :(得分:0)

修改:修改了连续复选框的代码。

$(function () {
    var mLimit = 3;
    $(':checkbox', 'div').click(function (e) {
        var c = 0;

        $(this)
            .parent()
            .find(':checkbox').each(function (i, el) {
                if (el.checked) c++;
                else c = 0;

                if (c > mLimit) e.preventDefault();
            });        
    });
});

DEMO: http://jsfiddle.net/sa2Lg/2/


对于HTML,如下所示,

<div>
  <input type="checkbox" />
  <input type="checkbox" />
  <input type="checkbox" />
  <input type="checkbox" />
  <input type="checkbox" />
  <input type="checkbox" />
  <input type="checkbox" />
  <input type="checkbox" />
  <input type="checkbox" />
</div>

您可以使用以下脚本限制

$(function () {
    $(':checkbox', 'div').click(function (e) {
        if ($(this).parent().find(':checked').length > 3) {
            e.preventDefault();
        }
    });
});

DEMO: http://jsfiddle.net/sa2Lg/

答案 1 :(得分:0)

我太懒了,不能真的为你写出来,因为它伤害了我的头脑,但可以使用nextAll()prevAll()函数来完成。

如果你$('input:checked').nextAll(':lt(2)');,你将从选中的复选框中获得接下来的两个复选框。这就是你必须检查输入的方式。我相信你可以找出所需的实际逻辑。