解决layui 三级联动下拉框更新时回显的问题


Posted in Javascript onSeptember 03, 2019

最近接触layui,比较简洁美观的一款ui,但也有很多小坑,记录一下实现省市区下拉三级联动更新回显的问题

<%--监听省份选择 --%>

 form.on('select(uprovinceId)', function(data){
  initCityList('change');
});

这里面有个问题就是 选择的时候 如果 请选择 的value 是“” 空字符串,当选择从河北省变到请选择时不会触发这个监听事件

<script type="text/javaScript">
layui.use(['form'],function(){
  var form = layui.form;
  <%--监听省份选择 --%>
  form.on('select(uprovinceId)', function(data){
  initCityList('change');
});
<%--监听城市选择 --%>
  form.on('select(ucityId)', function(data){
initDistrictList('change');
});
  <%--监听修改提交 --%>
    form.on('submit(update)', function(data){
   updateAccount();
   form.render();
 return false; //阻止表单跳转。如果需要表单跳转,去掉这段即可。
});
});
<%-- 监听取消按钮 --%>
$(document).on("click",".cancel",function(){ 
layer.closeAll("page");
}); 
$(function(){
<%--初始化省份列表 --%>
initProvinceList('init');
initCityList('init');
initDistrictList('init');
});
<%--初始化省份列表 --%>
function initProvinceList(flag){
var provinceId = $("#oldProvinceId").val();
$("#uprovinceId").append("<option value='" + -1 +"'>" + '请选择' + "</option>");
$("#udistrictId").append("<option value='" + -1 + "'>" + '请选择' + "</option>");
$("#ucityId").append("<option value='" + -1 + "'>" + '请选择' + "</option>");
var url = "${ctx}/admin/getProvinceList.action?ranNum="+Math.random();
$.post(url,{},function(data){
var list = eval(data);
       for (i = 0; i < list.length; i++) {
         var name = list[i].province;
         var id = list[i].id;
         if(id == provinceId){
         $("#uprovinceId").append("<option value='" + id + "' selected>" + name + "</option>");
         }else{
        $("#uprovinceId").append("<option value='" + id + "'>" + name + "</option>");
         }
       }
      layui.use(['form'],function(){
       var form = layui.form;
       form.render();
     });
});
}
<%--初始化城市列表 --%>
function initCityList(flag){
var provinceId = $("#uprovinceId").val();
var oldProvinceId = $("#oldProvinceId").val();
if(provinceId == -1 && flag == "init"){
provinceId = oldProvinceId; 
}
var cityId = $("#oldCityId").val();
$("#ucityId").empty();
$("#ucityId").append("<option value='" + -1 + "'>" + '请选择' + "</option>");
$("#udistrictId").empty();
$("#udistrictId").append("<option value='" + -1 + "'>" + '请选择' + "</option>");
var url = "${ctx}/admin/getCityList.action?ranNum="+Math.random();
$.post(url,{provinceId:provinceId},function(data){
var list = eval(data);
alert(list.length+"list长度");
       for (i = 0; i < list.length; i++) {
         var name = list[i].city;
         var id = list[i].id;
         if(id == cityId){
         $("#ucityId").append("<option value='" + id + "' selected>" + name + "</option>");
         }else{
        $("#ucityId").append("<option value='" + id + "'>" + name + "</option>");
         }
       }
       layui.use(['form'],function(){
       var form = layui.form;
       form.render();
     });
});
}
<%--初始化区列表 --%>
function initDistrictList(flag){
var cityId = $("#ucityId").val();
var oldCityId = $("#oldCityId").val();
if(cityId == -1 && flag == "init"){
cityId = oldCityId;
}
var districtId = $("#oldDistrictId").val();
$("#udistrictId").empty();
$("#udistrictId").append("<option value='" + -1 + "'>" + '请选择' + "</option>");
var url = "${ctx}/admin/getDistrictList.action?ranNum="+Math.random();
$.post(url,{cityId:cityId},function(data){
var list = eval(data);
       for (i = 0; i < list.length; i++) {
         var name = list[i].district;
         var id = list[i].id;
         if( id == districtId){
         $("#udistrictId").append("<option value='" + id + "' selected>" + name + "</option>");
         }else{
        $("#udistrictId").append("<option value='" + id + "'>" + name + "</option>");
         }
       }
       layui.use(['form'],function(){
       var form = layui.form;
       form.render();
     });
});
}

</script>

      <div class="layui-form-item city" style="margin-bottom: -8px;">
      <label class="layui-form-label">所负责区域</label>
      <div class="layui-inline">
      <div class="layui-input-inline" style="width: 90px;margin-right: 0px;margin-bottom: 0px;">
      <select id="uprovinceId" name="provinceId" lay-verify="required" lay-search="" lay-filter="uprovinceId">
      <!-- <option value="-1">请选择</option> -->
      </select>
      </div>
      </div>
      <div class="layui-inline">
      <div class="layui-input-inline" style="width: 90px;margin-right: 0px;margin-bottom: 0px;">
      <select id="ucityId" name="cityId" lay-verify="required" lay-search="" lay-filter="ucityId" οnchange="initDistrictList()">
      <!-- <option value="-1">请选择</option> -->
      </select>
      </div>
      </div>
      <div class="layui-inline">
      <div class="layui-input-inline" style="width: 90px;margin-right: 0px;margin-bottom: 0px;">
      <select id="udistrictId" name="districtId" lay-verify="required" lay-search="">
      <!-- <option value="-1">请选择</option> -->
      </select>
      </div>
      </div>
      </div>

<input type = "hidden" value="${admin.provinceId }" id="oldProvinceId">
<input type = "hidden" value="${admin.cityId }" id="oldCityId">
<input type = "hidden" value="${admin.districtId }" id="oldDistrictId">

以上这篇解决layui 三级联动下拉框更新时回显的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
统一接口:为FireFox添加IE的方法和属性的js代码
Mar 25 Javascript
网站被黑的假象--ARP欺骗之页面中加入一段js
May 16 Javascript
jQuery源码分析-03构造jQuery对象-工具函数
Nov 14 Javascript
JavaScript SetInterval与setTimeout使用方法详解
Nov 15 Javascript
JavaScript返回网页中超链接数量的方法
Apr 03 Javascript
jQuery焦点图轮播插件KinSlideshow用法分析
Jun 08 Javascript
js实现无缝循环滚动
Jun 23 Javascript
jQuery用户头像裁剪插件cropbox.js使用详解
Jun 07 jQuery
vue中计算属性(computed)、methods和watched之间的区别
Jul 27 Javascript
inner join 内联与left join 左联的实例代码
Sep 18 Javascript
微信小程序上传图片功能(附后端代码)
Jun 19 Javascript
layui 监听表格复选框选中值的方法
Aug 15 Javascript
Node.js学习教程之Module模块
Sep 03 #Javascript
vue动态绘制四分之三圆环图效果
Sep 03 #Javascript
微信小程序拼接图片链接无底洞深入探究
Sep 03 #Javascript
layui radio单选限制下一个radio单选的实例
Sep 03 #Javascript
JavaScript Array对象基本方法详解
Sep 03 #Javascript
微信小程序通过一个json实现分享朋友圈图片
Sep 03 #Javascript
layui 实现自动选择radio单选框(checked)的方法
Sep 03 #Javascript
You might like
德劲1103二次变频版的打磨
2021/03/02 无线电
WindowsXP中快速配置Apache+PHP5+Mysql
2008/06/05 PHP
JavaScript 页面坐标相关知识整理
2010/01/09 Javascript
善用事件代理,警惕闭包的性能陷阱。
2011/01/20 Javascript
jquery中prop()方法和attr()方法的区别浅析
2013/09/06 Javascript
Extjs表单常见验证小结
2014/03/07 Javascript
TypeScript 学习笔记之基本类型
2015/06/19 Javascript
利用JavaScript脚本实现滚屏效果的方法
2015/07/07 Javascript
javascript编写贪吃蛇游戏
2015/07/07 Javascript
详解JavaScript对象类型
2016/06/16 Javascript
js中scrollTop()方法和scroll()方法用法示例
2016/10/03 Javascript
Angularjs中ng-repeat-start与ng-repeat-end的用法实例介绍
2016/12/31 Javascript
JS 实现随机验证码功能
2017/02/15 Javascript
ES6入门教程之Iterator与for...of循环详解
2017/05/17 Javascript
bootstrap table表格客户端分页实例
2017/08/07 Javascript
JavaScript中变量、指针和引用功能与操作示例
2018/08/04 Javascript
Node.js爬虫如何获取天气和每日问候详解
2019/08/26 Javascript
JS实现轮播图效果
2020/01/11 Javascript
原生JavaScript实现弹幕组件的示例代码
2020/10/12 Javascript
Python使用PIL库实现验证码图片的方法
2016/03/11 Python
浅谈Python中的作用域规则和闭包
2018/03/20 Python
如何使用Python实现斐波那契数列
2019/07/02 Python
Python CVXOPT模块安装及使用解析
2019/08/01 Python
关于python导入模块import与常见的模块详解
2019/08/28 Python
PyCharm下载和安装详细步骤
2019/12/17 Python
pytorch::Dataloader中的迭代器和生成器应用详解
2020/01/03 Python
Django model.py表单设置默认值允许为空的操作
2020/05/19 Python
python + selenium 刷B站播放量的实例代码
2020/06/12 Python
html5录音功能实战示例
2019/03/25 HTML / CSS
美国蔬菜和植物种子公司:Burpee
2017/02/01 全球购物
Hanky Panky官方网站:内衣和睡衣
2019/07/25 全球购物
介绍一下Linux文件的记录形式
2012/04/18 面试题
餐饮业创业计划书范文
2014/01/06 职场文书
业务员自荐信范文
2014/04/20 职场文书
《失物招领》教学反思
2016/02/20 职场文书
Pygame Rect区域位置的使用(图文)
2021/11/17 Python