radio切换时需手动清空input值,因form.on('radio')不自动处理其他控件;应使用form.val()同步更新Layui表单状态,避免直接DOM操作失效。
radio 切换时如何联动清空 input 值
不能靠
单独监听就完事——它只告诉你哪个 radio 被点,不自动管其他表单控件。必须手动取值、判断、赋空,且要避开 dom 渲染时机问题。
为什么直接
有时无效
Layui 的
、
等控件在
后会被包裹一层 DOM,原生
可能写不进渲染后的实际输入框;更稳妥的做法是:先改原始 DOM 的
,再调
同步到
layui
内部状态。
错误写法:
(可能失效,尤其在 form.render() 后)
推荐写法:
(确保双向同步)
若没设 form filter,可用
+
多个 radio 组共用一个清空逻辑怎么写
常见场景:一组故障原因 radio(如“重启”“断电”“无光”),选中任一“是”,就往描述框追加文字;但一旦切换到另一个“是”,前面那个就得从描述里删掉——否则文本越积越多。
基于Layui自定义内容轮播插件
基于Layui自定义内容轮播插件是一款表格数据为ajax加载的本地json数据,本地查看会有跨域问题导致数据不能显示。
下载
不要用
硬删,容易误伤(比如“重启”和“重启失败”冲突)
建议维护一个映射对象:
每次触发 radio 事件时,先清空整个描述框,再把当前所有“是”的项拼进去
示例逻辑:
Vue + Layui 混合项目里 radio 双向绑定失效怎么办
你写了
,但点击 radio 后
没变,或者变了但 DOM 不更新——本质是 Vue 和 Layui 的事件系统打架。
Vue 的
依赖
或
事件,而 Layui 的 radio 是用
模拟的,不会触发 Vue 默认监听的事件
解决方案:去掉
,改用
手动更新 data,并显式调
更稳做法:完全放弃
,用
监听,再通过
更新
注意:别在 click 回调里直接操作
的
属性,Layui 会覆盖它
实际项目里最常被忽略的一点:**清空 input 不等于清空业务语义**。比如“维修描述”框被清空了,但后端仍可能根据 radio 值自动生成默认文案——前端清空动作必须和后端约定好是否以表单值为准,否则会出现“看着空了,提交却带旧数据”的情况。
form.on('radio(filtername)')$('#xxx').val('')inputtextareaform.render().val()valueform.val()$('#poi_md').val('')form.val('yourFormFilter', { poi_md: '' })layui.$('input[name="poi_md"]').val('').trigger('change')form.render()replace(){ poi_restart: '重启', poi_noelectricity: '断电', poi_nolight: '无光' }form.on('radio(poi_restart)', function(data) { syncDesc(); });
form.on('radio(poi_noelectricity)', function(data) { syncDesc(); });
// ...
function syncDesc() {
let parts = [];
if (form.val('yourFormFilter').poi_restart === '1') parts.push('重启');
if (form.val('yourFormFilter').poi_noelectricity === '1') parts.push('断电');
form.val('yourFormFilter', { poi_md: parts.join(',') });
}v-modelrecordTemplateInfo.airwayv-modelinputchangeclickv-model@clickthis.$nextTick(() => form.render())v-modelform.on('radio(xxx)')this.$set(this.recordTemplateInfo, 'airway', data.value)input[type=radio]checked