zoukankan      html  css  js  c++  java
  • 省市区 三级联动效果

    最近在尝试做一个地址选择的三级联动 话不多说,直接撸代码

    HTML

    1 <div class="ui-form-item mbank-front-border-left" id="locationDiv">
    2             <label style="text-align: left;">所在区域</label>
    3             <input  class=" ui-account-field" id="selectLocation" value="请选择" readonly>
    4             <i class="ui-icon-select"></i>
    5             <input id="locationVal" type="hidden" value="0">
    6 </div>

    JS:

      1 <script>
      2 var nameEl = document.getElementById('locationDiv');//大选择框
      3 var inputEl = document.getElementById('selectLocation');//input输入框
      4 
      5 var first = []; /* 省,直辖市 */
      6 var second = []; /**/
      7 var third = []; /**/
      8 
      9 var selectedIndex = [0, 0, 0]; /* 默认选中的地区 */
     10 
     11 var checked = [0, 0, 0]; /* 已选选项 */
     12 
     13 function creatList(obj, list){
     14   obj.forEach(function(item, index, arr){
     15   var temp = new Object();
     16   temp.text = item.name;
     17   temp.city_code = item.code;
     18   temp.value = index;
     19   list.push(temp);
     20   })
     21 }
     22 
     23 creatList(city, first);
     24 
     25 if (city[selectedIndex[0]].hasOwnProperty('sub')) {
     26   creatList(city[selectedIndex[0]].sub, second);
     27 } else {
     28   second = [{text: '', value: 0}];
     29 }
     30 
     31 if (city[selectedIndex[0]].sub[selectedIndex[1]].hasOwnProperty('sub')) {
     32   creatList(city[selectedIndex[0]].sub[selectedIndex[1]].sub, third);
     33 } else {
     34   third = [{text: '', value: 0}];
     35 }
     36 
     37 var picker = new Picker({
     38     data: [first, second, third],
     39   selectedIndex: selectedIndex,
     40     title: '地址选择'
     41 });
     42 
     43 picker.on('picker.select', function (selectedVal, selectedIndex) {
     44   var text1 = first[selectedIndex[0]].text;
     45   var text2 = second[selectedIndex[1]].text;
     46   var text3 = third[selectedIndex[2]] ? third[selectedIndex[2]].text : '';
     47 //console.log(third[selectedIndex[2]].city_code);
     48 //console.log(second[selectedIndex[1]].city_code);
     49 //
     50   var province_code = first[selectedIndex[0]].city_code;
     51   var city_code = second[selectedIndex[1]].city_code;
     52   var district_code = third[selectedIndex[2]].city_code;
     53       App.provinceCode = province_code;
     54     App.provinceName = text1;
     55     App.cityCode = city_code;
     56     App.cityName = text2;
     57     App.districtCode = district_code;
     58     App.districtName = text3;
     59     var str = text1 + ' ' + text2 + ' ' + text3;
     60     if (str.length>14) {
     61         str = str.substr(0,14)+"...";
     62     } 
     63     inputEl.value = str;
     64 });
     65 
     66 picker.on('picker.change', function (index, selectedIndex) {
     67   if (index === 0){
     68     firstChange();
     69   } else if (index === 1) {
     70     secondChange();
     71   }
     72 
     73   function firstChange() {
     74     second = [];
     75     third = [];
     76     checked[0] = selectedIndex;
     77     var firstCity = city[selectedIndex];
     78     if (firstCity.hasOwnProperty('sub')) {
     79       creatList(firstCity.sub, second);
     80 
     81       var secondCity = city[selectedIndex].sub[0]
     82       if (secondCity.hasOwnProperty('sub')) {
     83         creatList(secondCity.sub, third);
     84       } else {
     85         third = [{text: '', value: 0}];
     86         checked[2] = 0;
     87       }
     88     } else {
     89       second = [{text: '', value: 0}];
     90       third = [{text: '', value: 0}];
     91       checked[1] = 0;
     92       checked[2] = 0;
     93     }
     94 
     95     picker.refillColumn(1, second);
     96     picker.refillColumn(2, third);
     97     picker.scrollColumn(1, 0)
     98     picker.scrollColumn(2, 0)
     99   }
    100 
    101   function secondChange() {
    102     third = [];
    103     checked[1] = selectedIndex;
    104     var first_index = checked[0];
    105     if (city[first_index].sub[selectedIndex].hasOwnProperty('sub')) {
    106       var secondCity = city[first_index].sub[selectedIndex];
    107       creatList(secondCity.sub, third);
    108       picker.refillColumn(2, third);
    109       picker.scrollColumn(2, 0)
    110     } else {
    111       third = [{text: '', value: 0}];
    112       checked[2] = 0;
    113       picker.refillColumn(2, third);
    114       picker.scrollColumn(2, 0)
    115     }
    116   }
    117 
    118 });
    119 
    120 picker.on('picker.valuechange', function (selectedVal, selectedIndex) {
    121   console.log(selectedVal);
    122   console.log(selectedIndex);
    123 });
    124 
    125 nameEl.addEventListener('click', function () {
    126     picker.show();
    127 });
    128 </script>
  • 相关阅读:
    【转】Struts2 和 Spring MVC对比
    【转】JVM介绍
    linux内核阻塞IO
    linux并发concurrency控制
    内核延时
    linux中断编程
    (转)关于java.lang.UnsupportedClassVersionError解决方法总结
    (转) 使用jdk的xjc命令由schema文件生成相应的实体类
    TWS日志查看
    (转)IBM MQ 创建以及常见问题集锦
  • 原文地址:https://www.cnblogs.com/myfate/p/10837610.html
Copyright © 2011-2022 走看看