参考:
layui框架中解决select onchange事件无效的问题_layui select onchange-CSDN博客
layui select 绑定onchange事件失效-阿里云开发者社区
提炼:
layui改造了原声的select组件,所以直接写onchange无效,代之可以使用 lay-filter 属性 。
就像之前文章提到的:
原生的组件并没有使用(灰色),他们的样式是dispaly:none,取而代之的是下面渲染出来的<dl>
<dd></dd>
</dl>
给出我的示例代码:
前端:
<form class="layui-form">
<div class="layui-form-item" id="Three_link">
<label class="layui-form-label">所在地区:</label>
<div class="choose">
<select id="province" lay-filter="province">
<option value="">省</option>
<option v-for="item in ProvinceInfos" :value="item.areaId">
{{item.areaName}}
</option>
</select>
</div>
<div class="choose">
<select id="city" lay-filter="city">
<option value="">市</option>
<option v-for="item in CityInfos" :value="item.areaId">
{{item.areaName}}
</option>
</select>
</div>
<div class="choose">
<select id="town" lay-filter="town">
<option value="">县/区</option>
<option v-for="item in TownInfos" :value="item.areaId">
{{item.areaName}}
</option>
</select>
</div>
</div>
</form>
后端:
let form = layui.form
layui.use('form', function () {
//在表单域中,对指定按钮设置 lay-submit 属性,即意味着点击该按钮时,将触发提交事件
//表单不要嵌套
form.on('submit', function () {
submitAddr()
})
//x选择省加载市
form.on('select(province)', function (data) {
axios.get("/Area/city", {
params: {
parentId: data.value
}
}).then(res => {
if (res.data.code == 200 && res.status == 200) {
PCT.CityInfos = res.data.data;
PCT.TownInfos = [];
form.render('select', 'city');
}
})
})
//选择市加载县/区
form.on('select(city)', function (data) {
let selected = $("#city option:selected")
axios.get("/Area/town", {
params: {
parentId: data.value
}
}).then(res => {
if (res.data.code == 200 && res.status == 200) {
PCT.TownInfos = res.data.data;
form.render('select', 'town');
}
})
})
})