监听$form->select('department_id')表单项,动态获取数值填入 $form->text('department_nums')失败
代码1
$form->select('department_id')->options(\App\Models\Department::pluck('name', 'id'))->required()->rules([$unique_rule]);
$form->text('department_nums')->required()->rules([$unique_rule]);
代码2
public function getHeadcount(Request $request)
{
$id = $request->input('id');
$department = Department::find($id);
if (!$department) {
return response()->json([
'code' => 1,
'msg' => 'department does not exit',
]);
}
return response()->json([
'code' => 0,
'data' => [
'headcount' => $department->headcount,
],
]);
}
代码3
<script>
$('#department_id').on('change',function(e){
$.ajax({
method: "get",
url: "/get_headcount?id="+e.target.value,
success: function (data) {
if (data.code === 0) {
$('#department_nums').val(data.data.headcount);
} else {
alert(data.msg);
}
},
error: function () {
alert('获取部门人数失败');
}
});
});
</script>
要监听选择表单select(‘department_id’),动态获取department的headcount字段值,回填到text(‘department_nums’),但不成功,尝试过调整script代码的位置,也修改成下面这种
$form->script = <<<EOT
$('#department_id').on('change',function(e){
$.ajax({
method: "get",
url: "/get_headcount?id="+e.target.value,
success: function (data) {
if (data.code === 0) {
$('#department_nums').val(data.data.headcount);
} else {
alert(data.msg);
}
},
error: function () {
alert('获取部门信息失败');
}
});
});
EOT;
select
下拉的change
事件能被正常监听:事件方法入口加个打印日志,切换选项看能否正常输出;data.data.headcount
能正常输出;textarea
标签赋值方法是否正确?用$('#department_nums').text(data.data.headcount)
赋值试一下。如果还不行的话,看下控制文本框显示的是哪个元素,根据那个元素的类型使用对应的方法赋值。第一点的change事件监测不到
如果select下拉已经有一个change事件了,是不是增加的change事件就不能使用了吧?
改成这样,貌似也不行。