js 多级联动(省、市、区)
js 多级联动(省、市、区)
CreateTime--2018年4月9日17:10:38
Author:Marydon
方式一:
数据从数据库获取,ajax实现局部刷新
方式二:
数据从json文件获取,ajax实现局部刷新
以方式二为例,进行演示(省市区三级联动)
前提:需要有省、市、区三个的数据封装文件
代码实现
1.自封装函数
/**
* 多级联动
*/
function MultipleCascades() { var containerId = "";
var num = "";
var textArray = ""; // 参数初始化
this.init = function(initParams) {
if (!initParams) return; containerId = initParams['containerId'];
num = initParams['selectNum'];
textArray = initParams['textDescraption']; for (var i = ; i <= num; i++) {
var selectId = "linkage" + i;
this.selectFactory(selectId,textArray[i-]);
}
}; // 创建select标签
this.selectFactory = function(id,text) {
// 创建文本提示
var spanElement = document.createElement('span');
spanElement.className = "textBox";
spanElement.innerHTML = text;
$('#' + containerId).append(spanElement); // 创建select标签
var selectElement = document.createElement('select');
selectElement.id = id;
selectElement.className = "selectStyle";
// 给select标签填充空的option标签
var optionElement = document.createElement('option');
optionElement.value = "";
optionElement.innerHTML = "--请选择--";
selectElement.appendChild(optionElement); $('#' + containerId).append(selectElement);
}; // select标签绑定onchange事件
this.bindChangeEvent = function(selectId,setData) { $('#' + selectId).change(function () {
var j = parseInt(selectId.substring()) + ;
// 将本select标签和它后面的联动标签移除掉
for (;j <= num; j++) {
$('#linkage' + j + ' option:gt(0)').remove();
} var selectValue = $('#' + selectId).val();
if (!selectValue) return;
setData();
}); }
};
HTML片段
<div id="selectContainer"></div>
2.调用
方法一:
$(function(){
var mc = new MultipleCascades();
mc.init({
'containerId':'selectContainer',
'selectNum':3,
'textDescraption':['省:','市:','区:']
});
// 2.获取省份信息
$.getJSON("json/province.json",function(provinces){
var optionTags = "";
$(provinces).each(function(index,obj){
optionTags += "<option value=" + obj.id + ">" + obj.name + "</option>";
});
$('#linkage1').append(optionTags);
});
mc.bindChangeEvent('linkage1',function(){
var provinceId = $('#linkage1').val();
// 获取城市信息
$.getJSON("json/city.json",function(cities){
var optionTags = "";
$(cities[provinceId]).each(function(index,obj){
optionTags += "<option value=" + obj.id + ">" + obj.name + "</option>";
});
$('#linkage2').append(optionTags);
});
});
mc.bindChangeEvent('linkage2',function(){
var cityId = $('#linkage2').val();
// 获取区(县)信息
$.getJSON("json/area.json",function(areas){
var optionTags = "";
areas[cityId].forEach(function(obj){
optionTags += "<option value=" + obj.id + ">" + obj.name + "</option>";
});
$('#linkage3').append(optionTags);
});
});
});
方法二:
$(function(){
var mc = new MultipleCascades();
mc.init({
'containerId':'selectContainer',
'selectNum':3,
'textDescraption':['省:','市:','区:']
});
// 2.获取省份信息
$.getJSON("json/province.json",function(provinces){
var optionTags = "";
$(provinces).each(function(index,obj){
optionTags += "<option value=" + obj.id + ">" + obj.name + "</option>";
});
$('#linkage1').append(optionTags);
});
// 绑定onchange事件
$('#linkage1').change(function(){
// 1.移除市和区的下拉选项
$('#linkage2 option:gt(0)').remove();
$('#linkage3 option:gt(0)').remove();
var provinceId = $(this).val();
if (!provinceId) return;
// 2.获取城市信息
$.getJSON("json/city.json",function(cities){
var optionTags = "";
$(cities[provinceId]).each(function(index,obj){
optionTags += "<option value=" + obj.id + ">" + obj.name + "</option>";
});
$('#linkage2').append(optionTags);
});
});
$('#linkage2').change(function(){
$('#linkage3 option:gt(0)').remove();
var cityId = $(this).val();
if (!cityId) return;
// 获取区(县)信息
$.getJSON("json/area.json",function(areas){
var optionTags = "";
areas[cityId].forEach(function(obj){
optionTags += "<option value=" + obj.id + ">" + obj.name + "</option>";
});
$('#linkage3').append(optionTags);
});
});
});
区别:在于方法一又对onchange事件进行了封装。
效果展示:

说明:
1.使用我封装好的方法,具有良好的迁移性,操作简单,只需要在页面上放一个带有ID的div即可;
2.可创建指定级别联动;
3.select标签及前面的文字都设置了class,可自定义设置CSS样式;
4.其他实现方式已经写好。
相关推荐:
js 多级联动(省、市、区)的更多相关文章
- html实现 省——市——区三级联动
html实现 省——市——区三级联动 html中实现三级联动是一个不错的demo,博主在这里跟大家分享一下实现的过程,以及自己在过程中出现的一些问题,仅供参考. 首先我们将全国的省市区数据导入进来, ...
- 微信小程序-多级联动
微信小程序中的多级联动 这里用到的案例是城市选择器 先上代码: .wxml <view class="{{boxHide}}"> <view>{{nian} ...
- PHP多级联动的学习(一)
我尝试在ThinkCMF中实现多级联动,首先我开始看了dede的联动类别管理前后台的代码以及他的数据库,经过非常多次的尝试,我渐渐有了一点想法,并给予实施. 首先写出前台的界面.如图. 然后在数据库中 ...
- DropDownList的多级联动
DropDownList的多级联动的问题最典型的案例就是实现省市级三级联动的案例,对这个问题的描述是当选中山东省之后,在选择市的下拉菜单时,市一栏只出现山东省下面的市.对于县也是同样的道理. 我也做的 ...
- jQuery cxSelect 多级联动下拉菜单
随着电商热门,这种多层次的互动更充分地体现在下拉菜单,最明显的是多级联动地址下拉选择,因此,这里是一个简单的分享 jQuery cxSelect 多级联动下拉菜单 cxSelect 它是基于 jQue ...
- JavaScript 多级联动浮动(下拉)菜单 (第二版)
JavaScript 多级联动浮动(下拉)菜单 (第二版) 上一个版本(第一版请看这里)基本实现了多级联动和浮动菜单的功能,但效果不是太好,使用麻烦还有些bug,实用性不高.这次除了修改已发现的问 ...
- 前端js 省市联动
代码下载地址 <!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www. ...
- JS省市区联动
JS省市区使用文档 一:服务器返回JSON格式要求如下网址里面data的格式:(拿KISSY组件data格式来做的) http://gallery.kissyui.com/cityselector/d ...
- JS省市区联动效果
省市区联动下拉效果在WEB中应用非常广泛,尤其在电商网站最为常见.一般使用Ajax实现无刷新下拉联动.利用jQuery,通过读取JSON数据,实现无刷新动态下拉省市二(三)级联动效果. 首先我们可以看 ...
随机推荐
- 1.7(SQL学习笔记)游标
一.游标简介 SELECT语句得到的是一个结果集,有时我们需要对结果集中的单条数据进行处理. 这时就需要使用游标,游标定义时和一个SELECT语句的结果集关联在一起. 游标执行这个结果集,可以在结果集 ...
- nginx的重试机制以及nginx常用的超时配置说明
nginx的重试机制 现在对外服务的网站,很少只使用一个服务节点,而是部署多台服务器,上层通过一定机制保证容错和负载均衡. nginx就是常用的一种HTTP和反向代理服务器,支持容错和负载均衡. ng ...
- HDU 4618 Palindrome Sub-Array 暴力
Palindrome Sub-Array 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=4618 Description A palindrome s ...
- windows安装zookeeper单机版
1.在apache的官方网站提供了好多镜像下载地址,然后找到对应的版本,目前最新的是3.4.6下载地址:http://mirrors.cnnic.cn/apache/zookeeper/zookeep ...
- CentOS下的RPM包制作教程收集(rpmbuild)
http://www.jinbuguo.com/redhat/rpmbuild.html(中文手册) https://www.linuxidc.com/Linux/2016-09/134955.htm ...
- XuLA/XuLA2
http://www.xess.com/prods/prod048.php XuLA http://www.xess.com/prods/prod055.php XuLA2 http://www.xe ...
- Spring在bean配置文件中定义电子邮件模板
在上一篇Spring电子邮件教程,硬编码的所有电子邮件属性和消息的方法体中的内容,这是不实际的,应予以避免.应该考虑在Spring bean 配置文件中定义电子邮件模板. 1.Spring的邮件发件人 ...
- 掌握11项技能,你就是优秀的前端开发project师
导读: 你或许会认为前端开发是一个非常easy的工作,对呀,你就是刚刚从网页设计转型过来的.但当你深入当中时,一定会发现好像前端开发不是那么简单,光站点性能优化.响应式.框架就让你焦头烂额, 确实,做 ...
- 扩展LVM 逻辑卷存储空间
原因: 运行在Xen DomU的磁盘空间不足,需要扩展.DomU的存储主要为[os镜像文件+lv逻辑卷]的形式,现要对逻辑卷进行扩展. 过程(离线方式): 卸载逻辑卷 umount /dev/VolG ...
- springboot-application.properties可配置属性总结 (datasource 和 JPA)
########################################## ###datasource ########################################## ...