【问题标题】:Limit checked boxes to consecutive set in jQuery将选中的框限制为 jQuery 中的连续集
【发布时间】:2012-11-11 06:14:34
【问题描述】:

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

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

小例子:

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

【问题讨论】:

    标签: jquery checkbox limit


    【解决方案1】:

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

    $(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/

    【讨论】:

    • 我解释得很糟糕...我的意思不是连续,而是连续...第一,第二,第三或第三,第四,第五,但不是第一,第三,第五。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多