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. linux 学习第十五天(vsftpd配置)

    一.vstapd配置 vsftpd 服务(a.匿名公开 b.系统本地账户验证c.虚拟专用用户验证) iptables -F  (清空防火墙) service iptables save  (保存防火墙 ...

  2. vue-cli3详细config配置

    const path = require('path') module.exports = { publicPath: './', // vueConf.baseUrl, // 根域上下文目录 // ...

  3. BZOJ 4326: NOIP2015 运输计划(二分,树上差分)

    Time Limit: 30 Sec  Memory Limit: 128 MBSubmit: 1945  Solved: 1243[Submit][Status][Discuss] Descript ...

  4. Mycp补交作业

    Mycp补交作业 代码 import java.io.; import java.lang.; import java.util.Scanner; public class MyCP { public ...

  5. Java技术——Interface与abstract类的区别

    )抽象类是对类抽象,是面向整个类的自下而上的设计理念,一般是先有各种子类,再有把这些有关系的子类加以抽象为父类的需求.而接口是对行为的抽象,是面向行为的自上而下的设计理念,接口根本就不需要知道子类的存 ...

  6. Oracle下如何用rman备份到特定的sequence

    本文为摘抄,目的为方便日后阅读: http://docs.oracle.com/cd/B12037_01/server.101/b10734/rcmbackp.htm To determine the ...

  7. 人脸识别引擎SeetaFaceEngine中Detection模块使用的测试代码

    人脸识别引擎SeetaFaceEngine中Detection模块用于人脸检测,以下是测试代码: int test_detection() { std::vector<std::string&g ...

  8. day 9 名字管理系统

    1 while True ##### 布尔值:True or False In [8]: a = 19 In [6]: a > 18 Out[6]: True In [7]: a < 18 ...

  9. 杂谈001:晨曦Dawn的重新连接

    ------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 摘要: 我是晨曦,好久没有关注过我的博客了,整天都在乱糟糟的忙,叙述一下我消失的这段时间,然后我准备做几个专题 ...

  10. 在Centos7下安装与部署.net core

    在Centos7下安装与部署.net core 2018年02月28日 19:36:16 阅读数:388 个人安装流程,参照文档 https://www.cnblogs.com/Burt/p/6566 ...