前言

他来了,他来了,他带着BUG又来了…
这次趟Layui的坑,客户巴巴要收集用户的收货地址.这需要我们有一个全国的省市区县的数据,挨个手动输入是不可能的,这辈子都不可能.

然而

我们并不满足默认简陋的select界面样式,于是我们打开了layui的官方文档…

看了半天发现…


没有发现!

文档中并没有找到我们想要的动态地址选择代码,只是简单的弄了几个option上去而已.
完整的地址数据需要我们自己接入,还好我们有distpicker神器在手

Distpicker库

这里着重讲一下distpicker这个插件,轻量级的js库,本文使用的是V2.0.6版本.

  • 这个插件可以超级简单的实现三联select选择,并且支持选择省份切换子select操作
  • 全程仅需引用一个js文件即可,干净利索漂亮且美好.
  • 吐槽:为什么文档要写成英文的…

下面放个简单的示例代码:

<!--引用distpicker和jq-->
<script type="text/javascript" src="jqrey.min.js"></script>
<script type="text/javascript" src="distpicker.js"></script><!--html示例-->
<div data-toggle="distpicker" data-autoselect="3"><select></select><select></select><select></select>
</div><!--控制代码-->
<script>$("#distpicker").distpicker();
</script>

演示效果:

是的,你没有看错.就这么简单几行其他工作都帮你完成了!
当然这个插件还有更多的用法,小伙伴门可以去GitHub下载源码回来,里面的doc文件夹有作者为我们准备的各种调教说明.

通过代码调试我们发现,Distpicke帮我们插入了一堆option到select下,并且这些option会随着用户选择自动切换:

挣扎与彷徨,在真理中看到了光

看过Layui的文档示例和代码调试后才发现,Layui的三联选择器是通过渲染方式运行的.

也就是说它将原本的select标签隐藏,随后根据select数据重新生成了input显示.
这种渲染方式,在这个情况下需要我们手动的控制它该何时渲染.

好了,现在我们明白了:

Distpicke能够自动的生成option和自动切换select三联选择菜单
Layui的显示是基于select的数据重新生成input通过渲染方式进行的

于是,我们拥有了一个逻辑:
1.当Layui渲染初始化时候,初始化Distpicke,随后让Layui更新渲染
2.当Layui地址组件被选择切换的时候,通知Distpicke切换二三联菜单,随后渲染

准备

1.Layui一份
2.jqrey一份
3.distpicker一份(国内地址三联选择器)

上干货

复制下面代码到桌面,命名为LayuiDistpickerDemo.html

<!-- 引用资源-->
<script type="text/javascript" src="jqrey.min.js"></script>
<script type="text/javascript" src="distpicker.js"></script>
<link rel="stylesheet" href="layui/css/layui.css">
<script type="text/javascript" src="layui/layui.js"></script><!--地址选择-->
<form class="layui-form" action="" ><div id="distpicker2" class="layui-form-item" data-toggle="distpicker" data-autoselect="3"><label class="layui-form-label" style="float: left;">收货地址</label><div class="submit_address"><div class="layui-input-block"><select id="address_sheng" name="quiz1" lay-filter="brickType1"></select></div><div class="layui-input-block"><select id="address_shi" name="quiz2" lay-filter="brickType2"></select></div><div class="layui-input-block"><select id="address_qv" name="quiz3" lay-filter="brickType3"></select></div></div></div><!-- 控制代码--><script type="text/javascript">//layui表单组件渲染才显示 https://www.layui.com/doc/base/faq.html#formlayui.use('form', function () {//获取表单元素var form = layui.form;//表单初始化 随后让Layui渲染一次$("#distpicker2").distpicker();form.render();//声明表单select选择事件form.on('select(brickType1)', function (data) {updata_address_select(data, '#address_sheng');form.render();//重新渲染一次});form.on('select(brickType2)', function (data) {updata_address_select(data, '#address_shi');form.render();//重新渲染一次});form.on('select(brickType3)', function (data) {updata_address_select(data, '#address_qv');form.render();//重新渲染一次});});function updata_address_select(data, id) {//这个方法将select的value设置为当前选择,//并且激活了distpicker的选择事件来更新子地址列表var val = data.value;var sel = $(id);sel.val(data.value);sel.change();//alert("select! id:" + val.id + " val:" + data.value);}</script>
</form>

运行后我们得到了一个这样的界面

尝试对地址进行点击切换,我们发现上述我们所需的功能都已经实现了.伙伴们多看看上面代码的实现方式.照搬也无妨

结尾

这个轮子我总共装了2个多小时才装上,也让我对Layui有了更深的理解.
这里十分感谢Layui与Distpicker,助力我们茁壮膨胀.
拜了个拜.

HTML Layui Distpicker 住址/收货地址选择 联动选择框相关推荐

  1. ios收货地址三级联动选择

    这次的需求,是省市区三级联动选择,并且市的选择要根据省的id,然后区的选择要根据市的id 每次都要进行网络请求,关键代码,其实是 //监听轮子的移动 - (void)pickerView:(UIPic ...

  2. 仿京东收货地址三级联动

    声明 我没有用tabLayout(pageSlidingTabStrip) + viewpager  + fragment 如果用上面的方法实现 更加简单         我用的是  一个listvi ...

  3. 微信小程序-收货地址 省市区联动 组件

    简单记录直接上代码思路自己理: addressEditor.wxml <!--pages/my/my-add-address/index.wxml--><view class=&qu ...

  4. 微信小程序手动添加收货地址省市区联动

    先看效果图 html部分 用小程序的piceker-view 嵌入页面的滚动选择器 <picker-view indicator-style="height: 50px;" ...

  5. 写收货地址代码模块的思路整理——省市联动

    最近,一个同事接到一个开发任务,其中有一个功能模块就是关于收货地址的,在收货地址的回显上遇到了一些麻烦,因为我之前做过收货地址的模块,因此将经验总结于下,供大家参考: 所用技术:AngularJs 一 ...

  6. html5手机端三级联动城市选择代码,省市县三级联动(jQuery手机端收货地址选择地区代码)...

    [实例简介] [实例截图] [核心代码] jQuery手机端收货地址选择代码 - 站长素材 默认调用 所在地区: 设置默认值 所在地区: /** * 默认调用 */ !function () { va ...

  7. 微信小程序的选择收货地址、新增地址、地址管理等模块的总结(1)

    这几天主要在做公司微信小程序项目2.0版本的一些新增功能,其中就包括把原来的地址等个人固定信息独立成一个模块进行管理(选择收货地址),包括新增地址.地址修改.删除等可以直接选取个人地址而不需要每次都填 ...

  8. 微信小程序实现收货地址城市选择效果(添加收货地址)

    先来张效果图 这里主要是城市选择效果,请忽视其他,不要吐槽,谢谢 接下来看一下代码吧 wxml <!--pages/my/my-add-address/index.wxml--> < ...

  9. location选择收货地址

    目录 顶部导航条:复用head组件 搜索:复用search组件 点击定位当前位置 其他组件 上一个路由是首页 上一个路由不是首页 虚拟DOM挂载到真实DOM上面后 从路由中获取参数fromIndex ...

  10. php商城手机端省市显示,jQuery仿手机京东商城收货地址城市选择

    jQuery仿手机京东商城收货地址城市选择 js代码 /** * 默认调用 */ !function () { var $target = $('#J_Address'); $target.cityS ...

最新文章

  1. Android开发技巧--Application, ListView排列,格式化浮点数,string.xml占位符,动态引用图片...
  2. vc获取n卡编号_电脑入门知识:通过显卡型号中字母和数字判断显卡性能
  3. 解决slf4j 冲突
  4. docker mysql镜像连接不上_还在手动安装应用?试一下Docker
  5. C/C++打造Windows岁月留声机
  6. [vue] vue在组件中引入插件的方法有哪些?
  7. python中for循环和while循环else语句的执行过程和陷阱
  8. WordPress 5.1.1 发布,修复 CSRF 漏洞
  9. ios跨线程通知_iOS多线程编程指南(三)Run Loop
  10. mac的一些使用事项
  11. swing简单的打字游戏源码
  12. Maven入门指南12:将项目发布到私服
  13. cmake 学习笔记(三)
  14. 2017c语言国二试题,国家计算机c语言二级考试试题
  15. beini安装破*WIFI
  16. Spring实战(第4版)第1章 Spring之旅
  17. 人脸检测进阶:更快的5点面部标志检测器
  18. java面试之自我介绍
  19. Lancet Neurology:长期意识障碍的干预治疗
  20. 【论文学习】《“Hello, It’s Me”: Deep Learning-based Speech Synthesis Attacks in the Real World》

热门文章

  1. osip和mysql_osip2/eXosip2调试笔记
  2. 如何下载网页中的小视频
  3. ubuntu22.04在虚拟机中的安装过程以及搜狗输入法的安装
  4. 施乐打印机驱动程序安装(CP315/318DW)
  5. UOS手动选择富士施乐打印机驱动
  6. 使用Entrez下载文献
  7. 网络设备的区分(自顶向下)
  8. java五子棋难度_简单五子棋JAVA
  9. Python对话框使用
  10. 在Ubuntu16.04 安装RabbitVCS