formSelects.value() 是唯一可靠设置选中项的方式,必须传入字符串数组而非逗号分隔字符串;表格内需在 table.done 和 page.jump 中调用以保持状态;清空须传空数组,反选需手动计算差集。

formSelects.value() 是唯一可靠的方式
直接操作原生 <select> 的 selected 属性或用 jQuery 的 .prop('selected', true) 对 formSelects 无效——它把真实 <select> 隐藏了,所有 UI 状态都由插件内部维护。批量设置选中项必须走 formSelects.value() 接口。
传入字符串数组,不是逗号分隔字符串
常见错误是把后端返回的 "java,python,go" 直接传给 formSelects.value('mySelect', 'java,python,go'),结果只选中第一个。它只接受数组:
-
formSelects.value('mySelect', ['java', 'python'])✅ 正确 -
formSelects.value('mySelect', 'java,python')❌ 只生效第一个 -
formSelects.value('mySelect', 'java')❌ 单字符串会被当数组处理,实际选中['j','a','v','a']
表格行内多选框需在 done 回调里重置
layui table.render() 动态生成的单元格,每次翻页或 reload 都会销毁旧 DOM。如果在 ready 里初始化过 formSelects,表格里的下拉框不会自动继承初始值。
- 必须在
table.render()的done回调中调用formSelects.value() - 若用了分页,还要在
page的jump中再次调用,否则翻页后选中状态丢失 - 数据来自后端时,确保传入的数组元素和
data配置中的value字段类型一致(都是字符串或都是数字)
清空和反选要小心 value 类型
批量取消全部选中不能传 null 或 undefined,必须传空数组:
-
formSelects.value('mySelect', [])✅ 完全清空 -
formSelects.value('mySelect', null)❌ 无反应 -
formSelects.value('mySelect')❌ 这是取值,不是设值
反选逻辑得自己算:先 formSelects.value('mySelect') 拿当前已选项,再跟全量 data 对比,构造差集数组再传回去——插件不提供内置反选 API。


















