JSon实现三级联动

我觉得我这个方法比较麻烦,但是目前技术还比较弱,所以先做个笔记自己理解。目前没有和后台交互,只是在前台页面实现了

jQuery和JSon数据实现的,代码如下:

 <!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSON</title>
<script type="text/javascript" src="../WEB-INF/jquery-1.4.2.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
//省份,城市,乡镇的数据
var cpJson =[
{
"p" : "银川市",
"c" : [{"c1":"兴庆区"},{"c1":"金凤区"},{"c1":"西夏区"},{"c1":"中宁县"},{"c1":"灵武市"},{"c1":"贺兰县"}],
"d" : [{"c":"兴庆区","d":"兴庆区-1"},{"c":"兴庆区","d":"兴庆区-2"},{"c":"兴庆区","d":"兴庆区-3"},{"c":"金凤区","d":"金凤区-1"},{"c":"灵武市","d":"灵武市-1"},{"c":"灵武市","d":"灵武市-2"}]
},
{
"p" : "石嘴山市",
"c" : [{"c1":"大武口区"},{"c1":"惠农区"},{"c1":"平罗县"}],
"d" : [{"c":"大武口区","d":"大武口区-1"},{"c":"大武口区","d":"大武口区-2"},{"c":"大武口区","d":"大武口区-3"},{"c":"惠农区","d":"惠农区-1"},{"c":"平罗县","d":"平罗县-1"}]
},
{
"p" : "吴忠市",
"c" : [{"c1":"利通区"},{"c1":"红寺堡区"},{"c1":"盐池县"},{"c1":"同心县"},{"c1":"青铜峡市"}]
},
{
"p" : "中卫市",
"c" : [{"c1":"沙坡头区"},{"c1":"中宁县"},{"c1":"海原县"}]
},
{
"p" : "固原市",
"c" : [{"c1":"原州区"},{"c1":"泾源县"},{"c1":"西吉县"},{"c1":"隆德县"},{"c1":"彭阳县"}]
}
];
//初始化
function init(obj){
$("obj").html("<option>请选择</option>");
}
//获取省份的数据
init($("#pro"));
//获取有几个省份,通过循环遍历出来
for(var i = 0; i<cpJson.length;i++){
//获取到的数据
var proresult = "<option value='"+cpJson[i].p+"'>"+cpJson[i].p+"</option>";
//添加到显示省份的控件里
$("#pro").append(proresult);
} //获取当前省份的城市。通过选取省份触发change()事件
$("#pro").change(function(){
init($("#city"));
init($("#dis"));
//清空前面选取时遗留的数据。gt(index)方法获取下标大于index的数据,index从0开始
$("#city option:gt(0)").remove();
$("#dis option:gt(0)").remove();
for(var j = 0;j<cpJson.length;j++){
//判断选取的省份和JSon数据相匹配的数据
if($(this).attr("value") == cpJson[j].p){
//根据当前城市进行循环
for(var k = 0;k<cpJson[j].c.length;k++){
//获取当前省份对应的城市数据
var cityresult = "<option value='"+cpJson[j].c[k].c1+"'>"+cpJson[j].c[k].c1+"</option>";
//添加到城市控件里
$("#city").append(cityresult);
}
}
}
}); //获取当前城市的乡镇。通过选取城市触发change()事件
$("#city").change(function(){
init($("#dis"));
//清空前面选取时遗留的数据。gt(index)方法获取下标大于index的数据,index从0开始
$("#dis option:gt(0)").remove();
//根据省份循环
for(var j = 0;j<cpJson.length;j++){
//根据城市循环
for(var k = 0;k<cpJson[j].c.length;k++){
//判断选取的城市和JSon数据相匹配的数据,如果没有对应的乡镇就进行下次循环
if($(this).attr("value") == cpJson[j].c[k].c1 && cpJson[j].d != null ){
////根据乡镇循环
for(var n = 0;n<cpJson[j].d.length;n++){
//判断选取的城市和JSon数据相匹配的数据
if($(this).attr("value") == cpJson[j].d[n].c){
//获取当前城市对应的乡镇数据
var cityresult = "<option value='"+cpJson[j].d[n].d+"'>"+cpJson[j].d[n].d+"</option>";
//添加到乡镇控件里
$("#dis").append(cityresult);
}
}
}
}
}
}); });
</script>
</head>
<body>
<div id="info">
省份:<select id="pro"><option>请选择</option></select>
城市:<select id="city"><option>请选择<option></select>
乡镇:<select id="dis"><option>请选择<option></select>
</div>
</body>
</html>

效果图:

如果变换省份的话:

如果前面没有添加这两句话的时候,

结果如下:

使用JSon实现三级联动的更多相关文章

  1. JQuery+Json 省市区三级联动

    一.画面以及JS <!DOCTYPE html> <head> <meta http-equiv="Content-Type" content=&qu ...

  2. 中国省市区json数据 三级联动

    <label> <span>购买地址</span> <select name="PurchaseProvince" style=" ...

  3. jquery json ajax三级联动

    province_city_area.jsp <%@ page language="java" pageEncoding="UTF-8"%> < ...

  4. Hibernate+struts+JqueryAjax+jSON实现无刷新三级联动

    看网上JqueryAjax三级联动的例子讲不是很全,代码也给的不是很全,给初学者带来一定的难度.小弟自己写了一个,可能有些地方不是很好,希望大家能够提出建议. 用的是Hibernate+struts2 ...

  5. 省市区三级联动[JSON+Jquery]

    <!DOCTYPE html><head> <title>省市区三级联动[JSON+Jquery]</title> <script src=&qu ...

  6. Ajax异步请求struts的JSON机制(省市区三级联动)

    1.struts.xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts P ...

  7. android:省市县三级联动(基于json和spring)

    一.请看效果图": 二.程序的代码: 1.MainActivity.java package com.loveplusplus.loader.demo.ui; import org.json ...

  8. 根据参数显示类别(三级联动,需要JSON数据)

    根据参数显示类别(三级联动,需要JSON数据) Scripts/Category.js 调用方法: $(function () { BindCategory(); //默认绑定文本框中的值 BindC ...

  9. Jquery select 三级联动 (需要JSON数据)

    Scripts/Category.js //Jquery三级类别联动 $(function () { BindCategory(); }) function BindCategory() { var ...

随机推荐

  1. [译]C语言实现一个简易的Hash table(6)

    上一章中,我们实现了Hash表中的插入.搜索和删除接口,我们在初始化hash表时固定了大小为53,为了方便扩展,本章将介绍如何修改hash表的大小. 设置Hash表大小 现在,我们的hash表是固定大 ...

  2. C语言数据结构与算法之深度、广度优先搜索

    一.深度优先搜索(Depth-First-Search 简称:DFS) 1.1 遍历过程: (1)从图中某个顶点v出发,访问v. (2)找出刚才第一个被顶点访问的邻接点.访问该顶点.以这个顶点为新的顶 ...

  3. HTML5新增元素,标签总结

    总是遇到h5新标签的笔试题目,就查阅了资料来总结一下: 1.form相关: (1)form属性:在HTML5中表单元素可放在表单之外,通过给该元素添加form属性来指向目标表单(form属性值设为目标 ...

  4. 基于 OpenResty 实现一个 WS 聊天室

    基于 OpenResty 实现一个 WS 聊天室 WebSocket WebSocket 协议分析 WebSocket 协议解决了浏览器和服务器之间的全双工通信问题.在WebSocket出现之前,浏览 ...

  5. 20155318 2016-2017-2《Java程序设计》课程总结

    20155318 2016-2017-2<Java程序设计>课程总结 每周作业链接 预备作业1:亦师亦友--我所期望的师生关系,对专业的认识与期望等 预备作业2:没有了自主,学习的小船说翻 ...

  6. Microsoft .NET Framework 4 安装 1603错误的解决

    首先找到  C:\Windows\SoftwareDistribution\Download"这个文件夹,把里面的东西全删除了,然后把你更新失败的 NET Framework 4卸载了,然后 ...

  7. 优步司机如何联系客服?uber客服渠道,Uber优步司机客服渠道

    预约客服导航 为了更好的快速.有效地解决您的疑问,Uber优步从今日起开通了在线客服平台.如果您通过司机服务/常见问题没有找到您需要的答案,您可以通过点击下方的“进入在线客服平台”与我们的工作人员在线 ...

  8. day2 self __init__ __str__

    1 self  谁调用指向谁自己  相当于其他语言的this #1.类名 class Cat(): #大驼峰的命名规范 #2.类的属性 #3.类的方法 def eat(self): print(&qu ...

  9. HBase第三章 过滤器

    1  列值过滤器 SingleColumnValueFilter 对列值进行过滤. @Test public void scanDataByFilter() throws IOException { ...

  10. idea热部署时 编写Controller会接收不到参数

    因为我是热部署启动服务器后才编写的request和getparameter 所以可能接收不到 重启一下服务器即可