• 使用JSon实现三级联动


    JSon实现三级联动

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

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

      1 <!DOCTYPE html>
      2 <html>
      3 <head>
      4 <meta charset="UTF-8">
      5 <title>JSON</title>
      6 <script type="text/javascript" src="../WEB-INF/jquery-1.4.2.min.js"></script>
      7 <script type="text/javascript">
      8 $(document).ready(function(){
      9         //省份,城市,乡镇的数据
     10         var cpJson =[
     11               {
     12                 "p" : "银川市",
     13                 "c" : [{"c1":"兴庆区"},{"c1":"金凤区"},{"c1":"西夏区"},{"c1":"中宁县"},{"c1":"灵武市"},{"c1":"贺兰县"}],
     14                 "d" : [{"c":"兴庆区","d":"兴庆区-1"},{"c":"兴庆区","d":"兴庆区-2"},{"c":"兴庆区","d":"兴庆区-3"},{"c":"金凤区","d":"金凤区-1"},{"c":"灵武市","d":"灵武市-1"},{"c":"灵武市","d":"灵武市-2"}]
     15               },
     16               {
     17                 "p" : "石嘴山市",
     18                 "c" : [{"c1":"大武口区"},{"c1":"惠农区"},{"c1":"平罗县"}],
     19                 "d" : [{"c":"大武口区","d":"大武口区-1"},{"c":"大武口区","d":"大武口区-2"},{"c":"大武口区","d":"大武口区-3"},{"c":"惠农区","d":"惠农区-1"},{"c":"平罗县","d":"平罗县-1"}]
     20               },
     21               {
     22                 "p" : "吴忠市",
     23                 "c" : [{"c1":"利通区"},{"c1":"红寺堡区"},{"c1":"盐池县"},{"c1":"同心县"},{"c1":"青铜峡市"}]
     24               },
     25               {
     26                 "p" : "中卫市",
     27                 "c" : [{"c1":"沙坡头区"},{"c1":"中宁县"},{"c1":"海原县"}]
     28               },
     29               {
     30                 "p" : "固原市",
     31                 "c" : [{"c1":"原州区"},{"c1":"泾源县"},{"c1":"西吉县"},{"c1":"隆德县"},{"c1":"彭阳县"}]
     32               }
     33             ];
     34         //初始化
     35         function init(obj){
     36             $("obj").html("<option>请选择</option>");
     37         }
     38         //获取省份的数据
     39         init($("#pro"));
     40         //获取有几个省份,通过循环遍历出来
     41         for(var i = 0; i<cpJson.length;i++){
     42             //获取到的数据
     43             var proresult = "<option value='"+cpJson[i].p+"'>"+cpJson[i].p+"</option>";
     44             //添加到显示省份的控件里
     45             $("#pro").append(proresult);
     46         }    
     47         
     48         //获取当前省份的城市。通过选取省份触发change()事件
     49         $("#pro").change(function(){
     50             init($("#city"));
     51             init($("#dis"));
     52             //清空前面选取时遗留的数据。gt(index)方法获取下标大于index的数据,index从0开始
     53             $("#city option:gt(0)").remove();
     54             $("#dis option:gt(0)").remove();
     55             for(var j = 0;j<cpJson.length;j++){
     56                 //判断选取的省份和JSon数据相匹配的数据
     57                 if($(this).attr("value") == cpJson[j].p){
     58                     //根据当前城市进行循环
     59                     for(var k = 0;k<cpJson[j].c.length;k++){
     60                         //获取当前省份对应的城市数据
     61                         var cityresult = "<option value='"+cpJson[j].c[k].c1+"'>"+cpJson[j].c[k].c1+"</option>";
     62                         //添加到城市控件里
     63                         $("#city").append(cityresult);
     64                     }
     65                 }
     66             }
     67         });
     68         
     69         //获取当前城市的乡镇。通过选取城市触发change()事件
     70         $("#city").change(function(){
     71             init($("#dis"));
     72             //清空前面选取时遗留的数据。gt(index)方法获取下标大于index的数据,index从0开始
     73             $("#dis option:gt(0)").remove();
     74             //根据省份循环
     75             for(var j = 0;j<cpJson.length;j++){
     76                 //根据城市循环
     77                 for(var k = 0;k<cpJson[j].c.length;k++){
     78                     //判断选取的城市和JSon数据相匹配的数据,如果没有对应的乡镇就进行下次循环
     79                     if($(this).attr("value") == cpJson[j].c[k].c1 && cpJson[j].d != null ){
     80                         ////根据乡镇循环
     81                         for(var n = 0;n<cpJson[j].d.length;n++){
     82                             //判断选取的城市和JSon数据相匹配的数据
     83                             if($(this).attr("value") == cpJson[j].d[n].c){
     84                                 //获取当前城市对应的乡镇数据
     85                                 var cityresult = "<option value='"+cpJson[j].d[n].d+"'>"+cpJson[j].d[n].d+"</option>";
     86                                 //添加到乡镇控件里
     87                                 $("#dis").append(cityresult);
     88                             }
     89                         }
     90                     }
     91                 }
     92             }
     93         });
     94         
     95 });
     96 </script>
     97 </head>
     98 <body>
     99 <div id="info">
    100 省份:<select id="pro"><option>请选择</option></select>
    101 城市:<select id="city"><option>请选择<option></select>
    102 乡镇:<select id="dis"><option>请选择<option></select>
    103 </div>
    104 </body>
    105 </html>

    效果图:

     如果变换省份的话:

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

     

    结果如下:

  • 相关阅读:
    史上自定义 JavaScript 函数Top 10
    switch
    (不)扩展内置原型((Not) Augmenting Built-in Prototypes)
    for-in循环(for-in Loops)
    for
    在dreamweaver中设置php服务器F12预览的方法介绍
    method
    CSS中background-image【CSS Sprites,base64编码】
    shell编程中的小问题
    常见的linux问题积累
  • 原文地址:https://www.cnblogs.com/1123-wyl/p/8533754.html
Copyright © 2020-2023  润新知