基于layui实现select区域联动
要实现联动效果注意两点:
第一要可以监听到select的change事件;
第二异步加载的内容,需要重新渲染后才可以 正常使用。
Html结构:
<div> <form> <div> <label>选择地区</label> <div> <select> <option>请选择省</option> </select> </div> <div> <select> <option>请选择市</option> </select> </div> <div> <select> <option>请选择区/县</option> </select> </div> </div> <div> <label>选择地区</label> <div> <select> <option>请选择乡镇/街道</option> </select> </div> <!--<div class="layui-input-inline">--> <!--<select name="burg" lay-filter="burg" id="s_b">--> <!--<option value="1">庄/村</option>--> <!--</select>--> <!--</div>--> </div> </form></div>
js:
<script> layui.use(['form', 'layer', 'laytpl', 'jquery'], function () { var form = layui.form , $ = layui.jquery; var parentId = '0'; $(function () { $.post(serverPath + "sys/area/backProvince/" + parentId, function (result) { var p = result; for (v in p) { var pp = p[v].id; $("#s_p").append("<option value=" + pp + ">" + p[v].fullname + "") } form.render(); }) form.on('select(province)', function (data) { var p = $("#s_p").val(); if (p != "1") { $.post(serverPath + "sys/area/backProvince/" + p, function (result) { var c = result; $("#s_c").html(""); $("#s_c").append("<option value='1'>请选择市"); $("#s_x").html(""); $("#s_x").append("<option value='1'>请选择县/区"); $("#s_t").html(""); $("#s_t").append("<option value='1'>请选择乡镇/街道"); $("#s_b").html(""); $("#s_b").append("<option value='1'>请选择村/街道号"); for (v in c) { var cc = c[v].id; $("#s_c").append("<option value=" + cc + ">" + c[v].fullname + "") } form.render(); }) } }); form.on('select(city)', function (data) { var c = $("#s_c").val(); if (c != "1") { $.post(serverPath + "sys/area/backProvince/" + c, function (result) { var x = result; $("#s_x").html(""); $("#s_x").append("<option value='1'>请选择县/区"); $("#s_t").html(""); $("#s_t").append("<option value='1'>请选择乡镇/街道"); $("#s_b").html(""); $("#s_b").append("<option value='1'>请选择村/街道号"); for (v in x) { var xx = x[v].id; $("#s_x").append("<option value=" + xx + ">" + x[v].fullname + "") } form.render(); }); } }); form.on('select(area)', function (data) { var x = $("#s_x").val(); if (x != "1") { $.post(serverPath + 'sys/area/backProvince/'+ x, function (result) { var t = result; $("#s_t").html(""); $("#s_t").append("<option value='1'>请选择乡镇/街道"); $("#s_b").html(""); $("#s_b").append("<option value='1'>请选择村/街道号"); for (v in t) { var xx = t[v].id; $("#s_t").append("<option value=" + xx + ">" + t[v].fullname + "") } form.render(); }); } }); }); });</script>
总结:
1、select的chage监听事件使用
form.on('select(myselect)', function(data){}) 其中myselect是select的 lay-filter属性值
2、数据异步加载到select的option中之后,点击该select会发现layui的选中效果不起作用,需要使用form.render('select');重新渲染一次,就可以正常使用。
更多layui知识请关注PHP中文网layui教程栏目