我有多个数据可以通过复选框一次更改/更新。它正在工作,但是当它在列表上有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]
);
}