如何使用复选框更新我的表格only 1 column
?
我想使用复选框并更新我的active
列,其值为1
或0
。如果选中的值为1
,则为0
。
html
<label class="switch">
<input type="checkbox" data-name="active" data-id="{{ $courier->id }}">
<span class="slider round"></span>
</label>
data-name
是我的专栏名称
data-id
是我的行ID
controller function
public function Updatecourierstatus(Request $request) {
try {
$id = $request->input('id');
$field = $request->input('name');
$courier = Courier::findOrFail($id);
$courier->{$field} = //must get 1 or 0 here;
$courier->save();
} catch (Exception $e) {
return response($e->getMessage(), 400);
}
return response('', 200);
}
route
Route::post('/Updatecourierstatus', 'CourierController@Updatecourierstatus')->name('Updatecourierstatus');
});
JavaScript
不确定如何处理此部分!
我的最新代码:
script
<script>
$(function (){
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$('label.switch input[type="checkbox"]').on('click', function (event) {
$.post("{{route('Updatecourierstatus')}}", {
id: $(this).data("id"),
name: $(this).data("name"),
state: $(this).is(":checked") ? 0 : 1 // toggles
}).done(function(data) {
console.log(data)
});
});
});
</script>
controller
public function Updatecourierstatus(Request $request) {
try {
$id = $request->input('id');
$field = $request->input('name');
$state = $request->input('state');
$courier = Courier::findOrFail($id);
$courier->{$field} = (int) $state;
$courier->save();
} catch (Exception $e) {
return response($e->getMessage(), 400);
}
return response('', 200);
}
html
<label class="switch">
<input class="status" type="checkbox" data-name="active" data-id="{{ $courier->id }}" {{ $courier->active == '1' ? 'checked' : ''}}>
<span class="slider round"></span>
</label>
1
并关闭
对于值0
,总是关闭。{{ $courier->active == '1' ? 'checked' : ''}}
以便
根据数据库中的值来开启和关闭,但从那以后我的值
不会改变数据库,他们保持现有的价值,而不是得到
更新问题是state: $(this).is(":checked") ? 0 : 1
as&#34; What are the PHP operators “?” and “:” called and what do they do?&#34;解释说我必须使用state: $(this).is(":checked") ? 1 : 0
答案 0 :(得分:3)
我猜测你的节目正在使用lib的html,你应该检查lib的详细信息,它们可能会提供你可以使用的事件。
如果没有,你可以像下面这样做,只需发送一个ajax请求,当你切换值时,从查看代码name
看起来任意设置,如果有人发送,你可能不应该这样做一个喜怒无常的专栏名称。
好的,所以你可以点击复选框来执行ajax请求,并从数据属性中获取id
和name
。
<script>
$(function (){
$('label.switch input[type="checkbox"]').on('click', function (event) {
$.post("/Updatecourierstatus", {
id: $(this).data("id"),
name: $(this).data("name"),
state: $(this).is(":checked") ? 0 : 1 // toggles
}).done(function(data) {
console.log(data)
});
});
});
</script>
然后在您的控制器中,只需添加该值:
public function Updatecourierstatus(Request $request) {
try {
$id = $request->input('id');
$field = $request->input('name');
$state = $request->input('state');
$courier = Courier::findOrFail($id);
$courier->{$field} = (int) $state;
$courier->save();
} catch (Exception $e) {
return response($e->getMessage(), 400);
}
return response('', 200);
}
答案 1 :(得分:1)
如果使用ajax数据参数(如id和name do)选中复选框,则应提交变量显示。然后,您可以在控制器中接收并保存它。
答案 2 :(得分:1)
您可以使用jquery轻松完成此操作:
$('input.checkbox').on('change', function(e) {
$.ajax({
type: "POST",
url: url,
data: {value: $(this).val(), id: $(this).data('id'), name: $(this).data('name')},
success: function() {
console.log('submitted')
}
});
});