layui多选下拉框formSelects组件,动态拼接监听下拉框变更失效

提问 未结 6 214
和仔
和仔 2019-5-12
悬赏:100飞吻
版本:layui 浏览器:
<select name="select1" xm-select="select1" id="select1">
<option>进口累计流量(m3)</option>
<option>1#水泵电压(V)</option>
<option>1#水泵电流(A)</option>
<option>1#水泵转速(r/min)</option>
<option>1#水泵频率(Hz)</option>
</select>

layui.formSelects.on('select1',function(id, vals, val, isAdd, isDisabled){
alert('变更成功!')
})
初始化的select能监听得到


var html = '<option>进口累计流量(m3)</option>'
+'<option>1#水泵电压(V)</option>'
+'<option>1#水泵电流(A)</option>'
+'<option>1#水泵转速(r/min)</option>'
+'<option>1#水泵频率(Hz)</option>';
$("#select1").append(html);
layui.formSelects.render('select');
layui.formSelects.on('select1',function(id, vals, val, isAdd, isDisabled){
alert('变更成功!')
})

动态拼接option渲染后,layui.formSelects.on()监听无效,获取不到变更事件
回帖
  • 和仔
    2019-5-12
    不要沉下去啊。改layui.formSelects.render('select1');变更监听事件可以了。可是复选框我是拼接全部选中的,结果不选中了
    for(var i = 0;i < dataName.length;i++){
    html+='<option selected>'+dataName[i]+'</option>'
    }
    $("#select1").append(html);
    layui.formSelects.render('select1');
    0 回复
  • layui.formSelects.render('select1', {init: layui.formSelects.value('select1', 'val')});
    0 回复
  • 和仔
    2019-5-15
    @岁月小偷 val是指什么,需要改吗?直接写‘val’不可以啊
    0 回复
  • 和仔
    2019-5-15
    @岁月小偷 val改成dataName也不行
    0 回复
  • @和仔 具体要看他的api,val就是获得[1,2,3]的形式我记得,我测试页面中用到了这种形式是没问题的,重新render将当前的val作为init,render他不会默认继承当前的值,如果没有设置它的init就修改其他的属性,当前选中的值render之后也会丢失。
    0 回复
  • @和仔 我的测试页面中就是在表格中点击多选下拉的时候弹出一个layer去显示多选的选项,然后关闭的时候会重新渲染一下对应的这个下拉,这个时候会把当前的值作为init,大概的代码如下,效果自己试,如果没有的话关闭之后值就没了,你也可以下载我的页面然后修改测试试试看。
    0 回复