不晓得现在使用layui
的用户还算多不?
尤其是thinkphp+layui
的用户?
接下来说的是layui
表单校验时的一点bug。
-
运行环境
-
layui+thinkphp
,新增与编辑页面统一,采用模板初始赋值的方式。 -
具体问题
-
在
layui-form
里面的select
组件上添加lay-verify="required"
,在监听form
表单提交时,非空验证失败,在校验失败的select中下拉选框中匹配选择的是最后一行的值。 -
问题排查与解决:
-
正常的
select
组件若无初始定值value的话默认选中第一个,所以选中列的位置应当显示在列首,而不是列尾。结合其他正常使用lay-verify="required"
的select
并无差别。 -
排除问题:如检查与其他表单组件是否在同一个
form
中、组件value
属性需要存在等。 -
最终解决:当新增提交表单之后,编辑重新给该
select
赋值,修改该select
时选中空值,提交,表单验证有效,由此得知,该问题是thinkphp
模板赋值为非null
类型的空值,导致layui
认为select
存在选中值,且从头向下筛选符合选中条件的列值,未查询到,就停留在了最后一行。最后只需要在初始模板赋值的时候把存在默认值的数据改为null
即可。