站长资讯网
最全最丰富的资讯网站

基于layui实现select区域联动

基于layui实现select区域联动

要实现联动效果注意两点:

第一要可以监听到select的change事件;

第二异步加载的内容,需要重新渲染后才可以 正常使用。

Html结构:

<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>

总结:

1、select的chage监听事件使用

form.on('select(myselect)', function(data){}) 其中myselect是select的 lay-filter属性值

2、数据异步加载到select的option中之后,点击该select会发现layui的选中效果不起作用,需要使用form.render('select');重新渲染一次,就可以正常使用。

赞(0)
分享到: 更多 (0)

网站地图   沪ICP备18035694号-2    沪公网安备31011702889846号