0

我想做这样的事情:限制复选框数量

但是有一点变化。我希望复选框也必须是连续的。

小例子:

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

4

2 回答 2

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();
            });        
    });
});

演示: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();
        }
    });
});

演示:http: //jsfiddle.net/sa2Lg/

于 2012-11-09T17:38:52.967 回答
0

我懒得真正写出来给你,因为它让我很头疼,但它可以使用nextAll()prevAll()函数来完成。

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

于 2012-11-09T18:00:09.250 回答