jquery调取json数据实现省市级联的方法


Posted in Javascript onJanuary 29, 2015

本文实例讲述了jquery调取json数据实现省市级联的方法。分享给大家供大家参考。具体如下:

使用jQuery mobile作为创建移动web的框架,需要实现省市级联的功能,具体代码如下(还需要优化的地方):

Html代码:

jQuery mobile中,有input  list属性,下方紧跟<datalist >标签,中间包含的<option value="XXXX"></option>即为选项,相当于这个input为有下拉列表的功能,当然,input的list名称需要和datalist中的id一致。

<input id="province" list="prvlist" placeholder="省/自治区/直辖市" onblur="changeProvince();"> 
  <datalist id="prvlist"> 
 
  </datalist> 
  <input style="" id="city" list="citylist" placeholder="市" onblur="changeCity();"> 
  <datalist id="citylist"> 
 
  </datalist> 
  <input style="" id="area" list="arealist" placeholder="区"> 
  <datalist id="arealist"> 
 
</datalist>

js代码:

js代码,主要功能

1、提取json数据,绑定到省级下拉列表内

2、省级input选择好后,市级列表自动绑定

3、区级下拉列表同市级一样

<script> 
    $(function () { 
      getProvince();  //页面打开后,省级下拉列表自动绑定 
    }) 
    //获取省份 
    function getProvince() { 
      var Aid; 
      var Afather; 
      $.get('area_json0.txt', {}, function (data) { 
        for (var i = 0; i < data.length; i++) { 
          if (data[i].fatherId == 0) { 
            Afather += '<option id=" ' + data[i].id + '" value="' + data[i].name + '">'; 
          } 
        } 
        $("#prvlist").append(Afather); 
      } , 'json'); 
    } 
 
    function changeProvince(){ 
      var city; 
      var prv_val=$("#province").val(); 
      getJson(prv_val); 
    } 
    function changeCity(){ 
      var city_val=$("#city").val(); 
      getJsonArea(city_val); 
    } 
    function getJson(Name){ 
      var cityID; 
      $.get('area_json0.txt', {}, function (data) { 
        for (var i = 0; i < data.length; i++) { 
          if (data[i].name == Name) { 
            cityID=data[i].id; 
          } 
        } 
        setCity(cityID); 
      } , 'json'); 
    } 
    function setCity(val){ 
      var Acity; 
      var $listcity=$("#citylist"); 
      $.get('area_json0.txt', {}, function (data) { 
        for (var n = 0; n < data.length; n++) { 
          if (data[n].fatherId == val) { 
            alert(data[n].id); 
            Acity += '<option id=" ' + data[n].id + '" value="' + data[n].name + '">'; 
          } 
        } 
        $listcity.append(Acity); 
      } , 'json'); 
   } 
    function getJsonArea(Name){ 
      var areaID; 
      $.get('area_json0.txt', {}, function (data) { 
        for (var i = 0; i < data.length; i++) { 
          if (data[i].name == Name) { 
            areaID=data[i].id; 
          } 
        } 
        setArea(areaID); 
      } , 'json'); 
    } 
    function setArea(Aval){ 
      var Aarea; 
      var $listarea=$("#arealist"); 
      $.get('area_json0.txt', {}, function (data) { 
        for (var m = 0; m < data.length; m++) { 
          if (data[m].fatherId == Aval) { 
            alert(data[n].id); 
            Aarea += '<option id=" ' + data[m].id + '" value="' + data[m].name + '">'; 
          } 
        } 
        $listarea.append(Aarea); 
      } , 'json'); 
    } 
</script>

代码应该还可以进一步优化,暂时将代码保存。

Javascript 相关文章推荐
JS性能优化笔记搜索整理
Aug 21 Javascript
js 点击页面其他地方关闭弹出层(示例代码)
Dec 24 Javascript
Jquery跳到页面指定位置的方法
May 12 Javascript
Javascript前端UI框架Kit使用指南之kitjs事件管理
Nov 28 Javascript
基于jquery实现等比缩放图片
Dec 03 Javascript
JavaScript解析json格式数据简单示例
Dec 09 Javascript
浅谈几种常用的JS类定义方法
Jun 08 Javascript
JSP防止网页刷新重复提交数据的几种方法
Nov 19 Javascript
详解Webpack DLL用法以及功能
Jul 11 Javascript
如何使用JS在HTML中自定义字符串格式化
Jul 20 Javascript
浅谈Node模块系统及其模式
Nov 17 Javascript
JavaScript设计模式之原型模式分析【ES5与ES6】
Jul 26 Javascript
JavaScript中实现单体模式分享
Jan 29 #Javascript
angular简介和其特点介绍
Jan 29 #Javascript
javascript实现获取浏览器版本、操作系统类型
Jan 29 #Javascript
浅谈javascript中自定义模版
Jan 29 #Javascript
jQuery和AngularJS的区别浅析
Jan 29 #Javascript
node.js中的forEach()是同步还是异步呢
Jan 29 #Javascript
Node.js事件循环(Event Loop)和线程池详解
Jan 28 #Javascript
You might like
PHP判断来访是搜索引擎蜘蛛还是普通用户的代码小结
2015/09/14 PHP
jquery键盘事件使用介绍
2011/11/01 Javascript
jquery 操作两个select实现值之间的互相传递
2014/03/07 Javascript
js实现带有介绍的Select列表菜单实例
2015/08/18 Javascript
jquery实现标题字体变换的滑动门菜单效果
2015/09/07 Javascript
Bootstrap表格和栅格分页实例详解
2016/05/20 Javascript
JavaScript中的各种操作符使用总结
2016/05/26 Javascript
jQuery使用each方法与for语句遍历数组示例
2016/06/16 Javascript
BootStrap table表格插件自适应固定表头(超好用)
2016/08/24 Javascript
vue组件实例解析
2017/01/10 Javascript
angular2倒计时组件使用详解
2017/01/12 Javascript
基于JavaScript实现的插入排序算法分析
2017/04/14 Javascript
bootstrap模态框远程示例代码分享
2017/05/22 Javascript
[js高手之路]从原型链开始图解继承到组合继承的产生详解
2017/08/28 Javascript
浅谈angular4生命周期钩子
2017/09/05 Javascript
JS使用正则表达式找出最长连续子串长度
2017/10/26 Javascript
图片加载完成再执行事件的实例
2017/11/16 Javascript
微信小程序progress组件使用详解
2018/01/31 Javascript
使用react实现手机号的数据同步显示功能的示例代码
2018/04/03 Javascript
Vue 数组和对象更新,但是页面没有刷新的解决方式
2019/11/09 Javascript
vant-ui AddressEdit地址编辑和van-area的用法说明
2020/11/03 Javascript
Python基础教程之利用期物处理并发
2018/03/29 Python
用python标准库difflib比较两份文件的异同详解
2018/11/16 Python
Python从Excel中读取日期一列的方法
2018/11/28 Python
使用python读取.text文件特定行的数据方法
2019/01/28 Python
python 字典的打印实现
2019/09/26 Python
解决python图像处理图像赋值后变为白色的问题
2020/06/04 Python
用python写爬虫简单吗
2020/07/28 Python
《雷雨》教学反思
2014/02/20 职场文书
委托书样本
2014/04/02 职场文书
关工委先进个人事迹材料
2014/05/23 职场文书
中国文明网向国旗敬礼寄语大全
2014/09/27 职场文书
个人房屋转让协议书范本
2014/10/26 职场文书
大学生团日活动总结
2015/05/06 职场文书
民事起诉状范文
2015/05/19 职场文书
2016年小学党支部创先争优活动总结
2016/04/05 职场文书