本文實例講述了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>
代碼應該還可以進一步優化,暫時將代碼保存。