Laravel框架中模态框内toggle开关仅能关闭无法开启如何解决?
问题原因&修复方案
1. JS复选框状态读取错误(核心问题)
你当前代码读取的是表单本身的checked属性,表单元素不存在该属性,导致拿到的状态永远为false,IsActive值固定为0,自然只能切换为非活跃状态,无法切回活跃。
将JS中对应行修改为:
// 选择表单内name为IsActive的复选框读取状态 const IsActive = $("#updatetaxform [name=IsActive]").prop('checked') ? 1 : 0;
2. AJAX请求缺失记录ID参数
控制器editTax方法中用$request->id作为筛选条件更新数据,但你的AJAX请求参数里仅传递了pid和IsActive,没有传递要修改的记录ID。
如果表单内有存储记录ID的隐藏域,补充获取和传递逻辑即可:
// 新增获取ID的逻辑 const id = $("#updatetaxform [name=id]").val(); const pid = $("#updatetaxform [name=pid]").val(); const IsActive = $("#updatetaxform [name=IsActive]").prop('checked') ? 1 : 0; $.ajax({ data: { id, // 把ID加入请求参数 pid, IsActive }, // 剩余代码不变 })
3. 检查模型批量赋值配置
确认TaxDetails模型中已经将IsActive加入$fillable属性,否则Laravel会自动过滤该字段的批量更新操作:
// TaxDetails.php protected $fillable = [ 'pid', 'IsActive', // 其他允许批量赋值的字段 ];
可选优化
你当前在提交成功后既调用了datatable的fnDraw刷新表格,又执行了location.reload()页面重载,两个操作重复,保留任意一个即可。
内容的提问来源于stack exchange,提问作者Jin
相关产品推荐
相关产品推荐

