HTML Layui Distpicker 住址/收货地址选择 联动选择框
前言
他来了,他来了,他带着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 住址/收货地址选择 联动选择框相关推荐
- ios收货地址三级联动选择
这次的需求,是省市区三级联动选择,并且市的选择要根据省的id,然后区的选择要根据市的id 每次都要进行网络请求,关键代码,其实是 //监听轮子的移动 - (void)pickerView:(UIPic ...
- 仿京东收货地址三级联动
声明 我没有用tabLayout(pageSlidingTabStrip) + viewpager + fragment 如果用上面的方法实现 更加简单 我用的是 一个listvi ...
- 微信小程序-收货地址 省市区联动 组件
简单记录直接上代码思路自己理: addressEditor.wxml <!--pages/my/my-add-address/index.wxml--><view class=&qu ...
- 微信小程序手动添加收货地址省市区联动
先看效果图 html部分 用小程序的piceker-view 嵌入页面的滚动选择器 <picker-view indicator-style="height: 50px;" ...
- 写收货地址代码模块的思路整理——省市联动
最近,一个同事接到一个开发任务,其中有一个功能模块就是关于收货地址的,在收货地址的回显上遇到了一些麻烦,因为我之前做过收货地址的模块,因此将经验总结于下,供大家参考: 所用技术:AngularJs 一 ...
- html5手机端三级联动城市选择代码,省市县三级联动(jQuery手机端收货地址选择地区代码)...
[实例简介] [实例截图] [核心代码] jQuery手机端收货地址选择代码 - 站长素材 默认调用 所在地区: 设置默认值 所在地区: /** * 默认调用 */ !function () { va ...
- 微信小程序的选择收货地址、新增地址、地址管理等模块的总结(1)
这几天主要在做公司微信小程序项目2.0版本的一些新增功能,其中就包括把原来的地址等个人固定信息独立成一个模块进行管理(选择收货地址),包括新增地址.地址修改.删除等可以直接选取个人地址而不需要每次都填 ...
- 微信小程序实现收货地址城市选择效果(添加收货地址)
先来张效果图 这里主要是城市选择效果,请忽视其他,不要吐槽,谢谢 接下来看一下代码吧 wxml <!--pages/my/my-add-address/index.wxml--> < ...
- location选择收货地址
目录 顶部导航条:复用head组件 搜索:复用search组件 点击定位当前位置 其他组件 上一个路由是首页 上一个路由不是首页 虚拟DOM挂载到真实DOM上面后 从路由中获取参数fromIndex ...
- php商城手机端省市显示,jQuery仿手机京东商城收货地址城市选择
jQuery仿手机京东商城收货地址城市选择 js代码 /** * 默认调用 */ !function () { var $target = $('#J_Address'); $target.cityS ...
最新文章
- Android开发技巧--Application, ListView排列,格式化浮点数,string.xml占位符,动态引用图片...
- vc获取n卡编号_电脑入门知识:通过显卡型号中字母和数字判断显卡性能
- 解决slf4j 冲突
- docker mysql镜像连接不上_还在手动安装应用?试一下Docker
- C/C++打造Windows岁月留声机
- [vue] vue在组件中引入插件的方法有哪些?
- python中for循环和while循环else语句的执行过程和陷阱
- WordPress 5.1.1 发布,修复 CSRF 漏洞
- ios跨线程通知_iOS多线程编程指南(三)Run Loop
- mac的一些使用事项
- swing简单的打字游戏源码
- Maven入门指南12:将项目发布到私服
- cmake 学习笔记(三)
- 2017c语言国二试题,国家计算机c语言二级考试试题
- beini安装破*WIFI
- Spring实战(第4版)第1章 Spring之旅
- 人脸检测进阶:更快的5点面部标志检测器
- java面试之自我介绍
- Lancet Neurology:长期意识障碍的干预治疗
- 【论文学习】《“Hello, It’s Me”: Deep Learning-based Speech Synthesis Attacks in the Real World》