多次更新的第一项不起作用(laravel)

时间:2017-11-26 14:52:28

标签: javascript php html laravel

我有多个数据可以通过复选框一次更改/更新。它正在工作,但是当它在列表上有2个或更多数据时,它上面的第一个数据没有改变或更新,但其他数据工作正常。当列表只有1个项目时它工作正常。

这是我的HTML

@foreach($allergies as $aller)

    <select name="tolerance[]" class="tol" id="tol" style="width:20%" disabled>
        <option value="Low">Low</option>
        <option value="Medium">Medium</option>
        <option value="High">High</option>
    </select>

    <input type="checkbox" class="allergies" id="allergies" name="allergen[]" value="{{$aller->allergen_id}}">
    {{ $aller->allergen_name}}
    <br>

@endforeach

我的控制器..

public function update2(Request $request, $id){
    $user = Auth::user()->id;
    $data = $request->all();
    $tolerances = $data['tolerance'];
    foreach($tolerances as $tolerance)
    {
        $this->updateData($data['ua_id'], $user, $tolerance);
    }

    return redirect()->route('user.profile', compact('id', 'user'));
}

和js脚本,用于在每次更改复选框时启用/禁用选择框

<script>

    $(document).ready(function(){
        $('.tol').attr('disabled', 'disabled');
    });

    $(document).ready(function(){
        var $checkBox = $('.allergies');

        $checkBox.on('change',function(e){
            var $select = $(this).prev();
            if ($(this).is(':checked')){
                $select.removeAttr('disabled');
            }else{
                $select.attr('disabled','disabled');
            }
        });

    });

</script>

我在控制器中的updateData方法

public function updateData($ua_id, $user, $tolerance_level)
{
    UserAllergen::updateOrCreate(
        ['ua_id' => $ua_id, 'user_id' => $user],
        ['tolerance_level'=> $tolerance_level]
    );
}

0 个答案:

没有答案