更新时间:2020-07-15 20:31:02
更新说明:修改某些省市区数据
更新时间:2019-10-16 23:10:57
更新说明:
1. 支持单页多个三级联动
2. 省市县数据更新到相对比较准确的程度(实在找不到官方的最新数据),每个地级市添加“其他区”选项,以保证没有更新到的区可以正常填写
3. 香港,澳门,台湾移除具体的地区选择,如有需要,请自行添加(没有具体数据参考)
省市县数据存放在area.js,调用方法在select.js,里面都有注释
//截取自 selectMore.js
var province = $(".province");
//初始将省份数据赋予 provinceList来源于area.js 详见area.js
for (var i = 0; i < provinceList.length; i++) {
addEle(province, provinceList[i].name);
}
//向select中 追加内容
function addEle(ele, value) {
var optionStr = "";
optionStr = "<option value=" + value + " >" + value + "</option>";
ele.append(optionStr);
}
<!-- JSP 示例 -->
<div class="layui-form-item">
<label class="layui-form-label">请选择地区</label>
<div class="layui-inline">
<select name="province" id="province" lay-verify="required" lay-search lay-filter="province">
<!-- 数据来源于后台 此时因为调用area 所以option会有一个重复项 调用js去除重复项 -->
<option value="${XXX.province}">${XXX.province}</option>
<!-- 去除重复项 -->
<!--
<script>
$("select option").each(function(){
if($this.val() == $("select option:selected").val())
$this.remove();
//重新渲染select
form.render('select');
})
</srcipt>
-->
<!-- ajax的话 可以select默认设置为空,然后追加选中-->
<!--
$.ajax({
...
success:function(data){
$("select option").each(function(){
let $this= $(this);
if($this.val() == data.province)
$this.attr('selected', 'selected');
//重新渲染select
form.render('select');
})
}
})
-->
</select>
</div>
<!-- Thymeleaf 示例 -->
<div class="layui-form-item">
<label class="layui-form-label">请选择地区</label>
<div class="layui-inline">
<select name="province" id="province" lay-verify="required" lay-search lay-filter="province">
<!-- 数据来源于后台 此时因为调用area 所以option会有一个重复项 js去除重复项 -->
<option th:value="${XXX.province}" th:text="${XXX.province}"></option>
<!-- 去除重复项 -->
<!--
<script>
$("select option").each(function(){
if($this.val() == $("select option:selected").val())
$this.remove();
//重新渲染select
form.render('select');
})
</srcipt>
-->
<!-- ajax的话 可以select默认设置为空,然后追加选中-->
<!--
$.ajax({
...
success:function(data){
$("select option").each(function(){
let $this= $(this);
if($this.val() == data.province)
$this.attr('selected', 'selected');
//重新渲染select
form.render('select');
})
}
})
-->
</select>
</div>
<!-- html 模板可以采用Ajax传值的方式 -->
可以参照如下实例:
$.ajax({
url: /,
data: {},
type: "post",
dataType: "json",
success: function(data) {
$("#brand").find("option").remove();
let msg = "<option value=''>品牌</option>";
for (let i = 0; i < data.length; i++) {
msg += "<option value=" + data[i].id + ">" + data[i].title + "</option>"
}
$("#brand").append(msg);
$("#series").find("option").remove();
let ser = "<option value=''>系列</option>";
$("#series").append(ser);
form.render('select'); //这一步必不可少的 重新渲染select
},
error: function() {
$("#brand").find("option").remove();
let msg = "<option value=''>品牌</option>";
$("#brand").append(msg);
$("#series").find("option").remove();
let ser = "<option value=''>系列</option>";
$("#series").append(ser);
form.render('select'); //这一步必不可少的 重新渲染select
}
});
})
数据来源于中华人民共和国民政部,网址
http://www.mca.gov.cn
2019年8月中华人民共和国县以上行政区划代码,网址
http://www.mca.gov.cn/article/sj/tjyb/qgsj/2019/201909291543.html
部分数据:
410000 河南省 410100 郑州市 410102 中原区 410103 二七区 410104 管城回族区 410105 金水区 410106 上街区 410108 惠济区 410122 中牟县 410181 巩义市 410182 荥阳市 410183 新密市 410184 新郑市 410185 登封市
关于这个问题我也刚看到,行政区域划分没有郑州高新技术开发区等内容,我会参考其他数据,稍后会上传一版
<body> <div> <form class="layui-main" method="post" action="javascript:;"> ... </form> </div> </body>
这是我的写法,根据官网公共类规范
layui-main 用于设置一个宽度为 1140px 的水平居中块(无响应式)
如果你想设置为响应式请参考:
容器:
layui-container//此类能在小屏幕以上的设备中固定宽度,让列可控。在PC端会设置一定的宽度且居中 layui-fluid//使用此类不会固定宽度,而是 100%自适应
公共类:
layui-show-*-block 定义不同设备下的 display: block; * 可选值有:xs、sm、md、lg layui-show-*-inline 定义不同设备下的 display: inline; * 可选值同上 layui-show-*-inline-block 定义不同设备下的 display: inline-block; * 可选
值同上
layui-hide-* 定义不同设备下的隐藏类,即: display: none; * 可选值同上
详情请参考官网:
https://www.layui.com/doc/element/layout.html
目前没发现layui与bootstrap有冲突的现象,百度了一下也没有,你使用时候尽可能把layui.css放在最上面
将select.js中
var optionStar = "<option value="" >" + "请选择" + "</option>";
改为
var optionStar = "<option value="" disabled>" + "请选择" + "</option>";
以实现 请选择 下拉项禁用