layui表单lay-verify required验证无效解决

2,325 阅读1分钟

不晓得现在使用layui的用户还算多不? 尤其是thinkphp+layui的用户? 接下来说的是layui表单校验时的一点bug。

1656743142214.jpg

  • 运行环境

  • layui+thinkphp,新增与编辑页面统一,采用模板初始赋值的方式。

  • 具体问题

  • layui-form里面的select组件上添加 lay-verify="required",在监听form表单提交时,非空验证失败,在校验失败的select中下拉选框中匹配选择的是最后一行的值。 image.png

  • 问题排查与解决:

  • 正常的select组件若无初始定值value的话默认选中第一个,所以选中列的位置应当显示在列首,而不是列尾。结合其他正常使用lay-verify="required"select并无差别。

  • 排除问题:如检查与其他表单组件是否在同一个form中、组件value属性需要存在等。

  • 最终解决:当新增提交表单之后,编辑重新给该select赋值,修改该select时选中空值,提交,表单验证有效,由此得知,该问题是thinkphp模板赋值为非null类型的空值,导致layui认为select存在选中值,且从头向下筛选符合选中条件的列值,未查询到,就停留在了最后一行。最后只需要在初始模板赋值的时候把存在默认值的数据改为null即可。

image.png