To achieve the linkage effect, pay attention to two points:
First, you must be able to monitor the change event of the select;
Second, asynchronously loaded content, It needs to be re-rendered before it can be used normally.
Html structure:
<div class="x-body"> <form class="layui-form" action="" method="post"> <div class="layui-form-item"> <label class="layui-form-label">选择地区</label> <div class="layui-input-inline"> <select name="province" lay-filter="province" id="s_p"> <option value="1">请选择省</option> </select> </div> <div class="layui-input-inline"> <select name="city" lay-filter="city" id="s_c"> <option value="1">请选择市</option> </select> </div> <div class="layui-input-inline"> <select name="area" lay-filter="area" id="s_x"> <option value="1">请选择区/县</option> </select> </div> </div> <div> <label class="layui-form-label">选择地区</label> <div class="layui-input-inline"> <select name="towns" lay-filter="towns" id="s_t"> <option value="1">请选择乡镇/街道</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 type="text/javascript"> 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 + "</option>") } 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'>请选择市</option>"); $("#s_x").html(""); $("#s_x").append("<option value='1'>请选择县/区</option>"); $("#s_t").html(""); $("#s_t").append("<option value='1'>请选择乡镇/街道</option>"); $("#s_b").html(""); $("#s_b").append("<option value='1'>请选择村/街道号</option>"); for (v in c) { var cc = c[v].id; $("#s_c").append("<option value=" + cc + ">" + c[v].fullname + "</option>") } 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'>请选择县/区</option>"); $("#s_t").html(""); $("#s_t").append("<option value='1'>请选择乡镇/街道</option>"); $("#s_b").html(""); $("#s_b").append("<option value='1'>请选择村/街道号</option>"); for (v in x) { var xx = x[v].id; $("#s_x").append("<option value=" + xx + ">" + x[v].fullname + "</option>") } 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'>请选择乡镇/街道</option>"); $("#s_b").html(""); $("#s_b").append("<option value='1'>请选择村/街道号</option>"); for (v in t) { var xx = t[v].id; $("#s_t").append("<option value=" + xx + ">" + t[v].fullname + "</option>") } form.render(); }); } }); }); }); </script>
Summary:
1. Use select’s chage listening event
form.on('select(myselect)', function(data){}) where myselect is the lay-filter attribute value of select
2. After the data is asynchronously loaded into the option of the select, clicking the select will It is found that the selection effect of layui does not work. You need to use form.render('select'); to re-render it and it can be used normally.
For more informationlayui, please pay attention to the layui tutorial column on the PHP Chinese website
The above is the detailed content of Implement select area linkage based on layui. For more information, please follow other related articles on the PHP Chinese website!