Php 在Laravel中只允许一定数量的复选框

Php 在Laravel中只允许一定数量的复选框,php,checkbox,laravel,laravel-4,Php,Checkbox,Laravel,Laravel 4,我列出了十个简单的复选框,它们看起来都是这样的: {{ Form::label('waterBox', 'Water:') }} {{ Form::checkbox('waterBox', 'yes'); }} {{ Form::label('calBox', 'Calories (kcal):') }} {{ Form::checkbox('calBox', 'yes'); }} function limitCheckboxes() { var ch

我列出了十个简单的复选框,它们看起来都是这样的:

 {{ Form::label('waterBox', 'Water:') }}
 {{ Form::checkbox('waterBox', 'yes'); }}

 {{ Form::label('calBox', 'Calories (kcal):') }}
 {{ Form::checkbox('calBox', 'yes'); }}
    function limitCheckboxes()
    {
        var checkedBoxCount = $('[name=waterBox]:checked').length;
        $('[name=waterBox]:checked').each(function () {
            if ((checkedBoxCount > 5) &&
                (this.checked))
            {
                this.checked = false;
                checkedBoxCount--;
            }
        });
    }

我不想让用户在提交表单之前选中超过5个框。如何使第六个框被选中后,另一个框被选中

您可以调用一个javascript函数(在本例中我使用jQuery),该函数查看所有的waterBox复选框,并将其限制为5,如下所示:

 {{ Form::label('waterBox', 'Water:') }}
 {{ Form::checkbox('waterBox', 'yes'); }}

 {{ Form::label('calBox', 'Calories (kcal):') }}
 {{ Form::checkbox('calBox', 'yes'); }}
    function limitCheckboxes()
    {
        var checkedBoxCount = $('[name=waterBox]:checked').length;
        $('[name=waterBox]:checked').each(function () {
            if ((checkedBoxCount > 5) &&
                (this.checked))
            {
                this.checked = false;
                checkedBoxCount--;
            }
        });
    }
然后确保用括号命名复选框:

{{ Form::checkbox('waterBox', 'yes', false, ['onclick' => 'limitCheckboxes()']); }}
我还没有对此进行测试,但一般原则应该有效

更新:修复了复选框上缺少的ID属性

更新2:修复了jQuery复选框和计数的选择


更新3:四处摆弄,并获得了一个工作示例。上面的代码现在应该反映了这一点。:)添加了fiddle代码:

您可以调用一个javascript函数(在本例中我使用jQuery),该函数查看所有的waterBox复选框,并将其限制为5,如下所示:

 {{ Form::label('waterBox', 'Water:') }}
 {{ Form::checkbox('waterBox', 'yes'); }}

 {{ Form::label('calBox', 'Calories (kcal):') }}
 {{ Form::checkbox('calBox', 'yes'); }}
    function limitCheckboxes()
    {
        var checkedBoxCount = $('[name=waterBox]:checked').length;
        $('[name=waterBox]:checked').each(function () {
            if ((checkedBoxCount > 5) &&
                (this.checked))
            {
                this.checked = false;
                checkedBoxCount--;
            }
        });
    }
然后确保用括号命名复选框:

{{ Form::checkbox('waterBox', 'yes', false, ['onclick' => 'limitCheckboxes()']); }}
我还没有对此进行测试,但一般原则应该有效

更新:修复了复选框上缺少的ID属性

更新2:修复了jQuery复选框和计数的选择


更新3:四处摆弄,并获得了一个工作示例。上面的代码现在应该反映了这一点。:)添加了fiddle代码:

您可以调用一个javascript函数(在本例中我使用jQuery),该函数查看所有的waterBox复选框,并将其限制为5,如下所示:

 {{ Form::label('waterBox', 'Water:') }}
 {{ Form::checkbox('waterBox', 'yes'); }}

 {{ Form::label('calBox', 'Calories (kcal):') }}
 {{ Form::checkbox('calBox', 'yes'); }}
    function limitCheckboxes()
    {
        var checkedBoxCount = $('[name=waterBox]:checked').length;
        $('[name=waterBox]:checked').each(function () {
            if ((checkedBoxCount > 5) &&
                (this.checked))
            {
                this.checked = false;
                checkedBoxCount--;
            }
        });
    }
然后确保用括号命名复选框:

{{ Form::checkbox('waterBox', 'yes', false, ['onclick' => 'limitCheckboxes()']); }}
我还没有对此进行测试,但一般原则应该有效

更新:修复了复选框上缺少的ID属性

更新2:修复了jQuery复选框和计数的选择


更新3:四处摆弄,并获得了一个工作示例。上面的代码现在应该反映了这一点。:)添加了fiddle代码:

您可以调用一个javascript函数(在本例中我使用jQuery),该函数查看所有的waterBox复选框,并将其限制为5,如下所示:

 {{ Form::label('waterBox', 'Water:') }}
 {{ Form::checkbox('waterBox', 'yes'); }}

 {{ Form::label('calBox', 'Calories (kcal):') }}
 {{ Form::checkbox('calBox', 'yes'); }}
    function limitCheckboxes()
    {
        var checkedBoxCount = $('[name=waterBox]:checked').length;
        $('[name=waterBox]:checked').each(function () {
            if ((checkedBoxCount > 5) &&
                (this.checked))
            {
                this.checked = false;
                checkedBoxCount--;
            }
        });
    }
然后确保用括号命名复选框:

{{ Form::checkbox('waterBox', 'yes', false, ['onclick' => 'limitCheckboxes()']); }}
我还没有对此进行测试,但一般原则应该有效

更新:修复了复选框上缺少的ID属性

更新2:修复了jQuery复选框和计数的选择


更新3:四处摆弄,并获得了一个工作示例。上面的代码现在应该反映了这一点。:)添加了fiddle代码:

随机取消选中其他复选框会让用户感到有点困惑

不如禁用其他复选框

var $checkboxes = $('input[type=checkbox]');

$checkboxes.change(function () {
    if (this.checked) {
        if ($checkboxes.filter(':checked').length == 5) {
            $checkboxes.not(':checked').prop('disabled', true);
        }
    } else {
        $checkboxes.prop('disabled', false);
    }
});
这是小提琴:



p.S.如果您没有使用jQuery,请告诉我,我会给您一个本机解决方案。

随机取消选中其他复选框会让您的用户感到有点困惑

不如禁用其他复选框

var $checkboxes = $('input[type=checkbox]');

$checkboxes.change(function () {
    if (this.checked) {
        if ($checkboxes.filter(':checked').length == 5) {
            $checkboxes.not(':checked').prop('disabled', true);
        }
    } else {
        $checkboxes.prop('disabled', false);
    }
});
这是小提琴:



p.S.如果您没有使用jQuery,请告诉我,我会给您一个本机解决方案。

随机取消选中其他复选框会让您的用户感到有点困惑

不如禁用其他复选框

var $checkboxes = $('input[type=checkbox]');

$checkboxes.change(function () {
    if (this.checked) {
        if ($checkboxes.filter(':checked').length == 5) {
            $checkboxes.not(':checked').prop('disabled', true);
        }
    } else {
        $checkboxes.prop('disabled', false);
    }
});
这是小提琴:



p.S.如果您没有使用jQuery,请告诉我,我会给您一个本机解决方案。

随机取消选中其他复选框会让您的用户感到有点困惑

不如禁用其他复选框

var $checkboxes = $('input[type=checkbox]');

$checkboxes.change(function () {
    if (this.checked) {
        if ($checkboxes.filter(':checked').length == 5) {
            $checkboxes.not(':checked').prop('disabled', true);
        }
    } else {
        $checkboxes.prop('disabled', false);
    }
});
这是小提琴:




p.S.如果您没有使用jQuery,请告诉我,我会为您提供一个本机解决方案。

很抱歉,我在选中所有10个框时没有问题。我应该注意的是,并非所有表单都有“waterBox”的名称,但我不知道这是否会影响您的答案。您必须为每个页面创建一个函数,或者可能将复选框的名称作为第二个属性传入。我上面更新的代码考虑了所有复选框,因此如果有人选中了页面上超过5个复选框,它将取消选中它找到的第一个复选框。该复选框只出现在一个页面上,因此这不应该是一个问题。我尝试了你最新的代码,但我仍然能够选中所有的框。请原谅我的措辞。是的,没有一个是未检查的,我可以一次检查所有十个。我正在制作一个函数示例。很快就会有东西的。对不起,我在检查所有10个框时没有问题。我应该注意的是,并非所有表单都有“waterBox”的名称,但我不知道这是否会影响您的答案。您必须为每个页面创建一个函数,或者可能将复选框的名称作为第二个属性传入。我上面更新的代码考虑了所有复选框,因此如果有人选中了页面上超过5个复选框,它将取消选中它找到的第一个复选框。该复选框只出现在一个页面上,因此这不应该是一个问题。我尝试了你最新的代码,但我仍然能够选中所有的框。请原谅我的措辞。是的,没有一个是未检查的,我可以一次检查所有十个。我正在制作一个函数示例。很快就会有东西的。对不起,我在检查所有10个框时没有问题。我应该注意的是,并非所有表单都有“waterBox”的名称,但我不知道这是否会影响您的答案。您必须为每个页面创建一个函数,或者可能将复选框的名称作为第二个属性传入。我上面更新的代码考虑了所有复选框,因此如果有人选中了页面上超过5个复选框,它将取消选中它找到的第一个复选框。该复选框只出现在一个页面上,因此这不应该是一个问题。我尝试了你最新的代码,但我仍然能够选中所有的框。请原谅我的措辞。是的,没有一个被检查过,我可以一次检查全部十个