Php 将复选框与相应的输入字段分组

Php 将复选框与相应的输入字段分组,php,mysql,forms,validation,laravel,Php,Mysql,Forms,Validation,Laravel,我试图找到一种方法来分组复选框和输入字段,这样用户只能在选中复选框的情况下将数据输入字段。我目前有一个生成的复选框字段(表中的值)和相应的输入字段 我目前的解决办法是: @foreach($labourTypes as $id => $name) <div class="checkbox"> <label> {!! Form::checkbox("labour

我试图找到一种方法来分组复选框和输入字段,这样用户只能在选中复选框的情况下将数据输入字段。我目前有一个生成的复选框字段(表中的值)和相应的输入字段

我目前的解决办法是:

    @foreach($labourTypes as $id => $name)
            <div class="checkbox">
                <label>
                      {!! Form::checkbox("labour_types[]", $id) !!} {{$name}}
                </label>
                {!! Form::input('number', 'required_labour_type_hours[]', '') !!}
            </div>
        @endforeach
这是我目前的解决方法,但如果用户填写的输入字段没有勾选相应的复选框,则它不会阻止(并导致插入错误)

这就是目前的情况:

我正在试图找到一种方法,使其仅在选中相应复选框时才允许输入,或者在插入之前将它们分组到一个数组中,并在输入之前删除未选中复选框的那些?一般来说,我对laravel和php都是新手,所以我很难想出一个简单的解决方法


谢谢。

我会在前端使用jQuery来控制用户的输入。为了安全起见,我还将验证服务器端的数据。使用jQuery,如果未选中复选框,您可以轻松地将输入字段设置为只读,并根据需要进行更新。此代码假定输入字段为
type=“text”
之一。您可以轻松更新以支持多种输入类型

jQuery(document).ready(function($) {

    $('.checkbox').each(function() {

        var cbox = $(this).find('input[type=checkbox]'),
            inp = $(this).find('input[type=text]');

        cbox.on('change', function(evt) {

            if( $(this).is(':checked') )
                inp.removeAttr('readonly');
            else
                inp.attr('readonly', true);

        });

        //init
        if( ! cbox.is(':checked') )
            inp.attr('readonly', true);

    });

});
在服务器端,这就像检查复选框的存在一样简单。如果未选中复选框,则在表单提交期间不会将其发送到服务器。因此,使用类似于:

if( isset($_POST['some_checkbox']) ) {
    //sanitize, validate, and save the value of the corresponding text field
} // else do nothing with this text field

我目前正在处理我的应用程序的另一部分,所以我还没有开始验证数据服务器端,但是jQuery read-only正好满足了我的需要。谢谢
if( isset($_POST['some_checkbox']) ) {
    //sanitize, validate, and save the value of the corresponding text field
} // else do nothing with this text field