123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294 |
- /**
- * @name jQuery Cascdejs plugin
- * @author zdy
- * @version 1.0
- */
- //首先需要初始化
- var xmlDoc;
- var TopnodeList;
- var CityList;
- var citys;
- var countyNodes;
- var nodeindex = 0;
- var childnodeindex = 0;
- var new_area = 0;
- var open_street = 0;
- //获取xml文件
- function cascdeInit(na,os, parent_id, v1,v2,v3,v4,v5) {
- id1= ".sel-province";
- id2= ".sel-city";
- id3= ".sel-area";
- id4= ".sel-street";
- new_area = na;
- open_street = os;
- if (v5) {
- id1 += v5;
- id2 += v5;
- id3 += v5;
- id4 += v5;
- }
- //打开xlmdocm文档
- if (new_area == 1) {
- var xmlfile = '/static/js/dist/area/AreaNew.xml';
- } else {
- var xmlfile = '/static/js/dist/area/Area.xml';
- }
- xmlDoc = loadXmlFile(xmlfile);
- var dropElement1 = $('#'+parent_id).find(id1)[0];
- var dropElement2 = $('#'+parent_id).find(id2)[0];
- var dropElement3 = $('#'+parent_id).find(id3)[0];
- var dropElement4 = $('#'+parent_id).find(id4)[0];
- RemoveDropDownList(dropElement1);
- RemoveDropDownList(dropElement2);
- RemoveDropDownList(dropElement3);
- RemoveDropDownList(dropElement4);
- if (window.ActiveXObject) {
- TopnodeList = xmlDoc.selectSingleNode("address").childNodes;
- }
- else {
- TopnodeList = xmlDoc.childNodes[0].getElementsByTagName("province");
- }
- if (TopnodeList.length > 0) {
- //省份列表
- var county;
- var province;
- var city;
- for (var i = 0; i < TopnodeList.length; i++) {
- //添加列表项目
- county = TopnodeList[i];
- var option = document.createElement("option");
- option.value = county.getAttribute("name");
- option.text = county.getAttribute("name");
- if (v1 == option.value) {
- option.selected = true;
- nodeindex = i;
- }
- dropElement1.add(option);
- }
- if (TopnodeList.length > 0) {
- //城市列表
- citys = TopnodeList[nodeindex].getElementsByTagName("city");
- for (var i = 0; i < citys.length; i++) {
- var id = dropElement1.options[nodeindex].value;
- //默认为第一个省份的城市
- province = TopnodeList[nodeindex].getElementsByTagName("city");
- var option = document.createElement("option");
- option.value = province[i] .getAttribute("name");
- option.text = province[i].getAttribute("name");
- if (v2 == option.value) {
- option.selected = true;
- childnodeindex = i;
- }
- dropElement2.add(option);
- }
- selectcounty(parent_id, v3,v4,v5);
- }
- }
- }
- /*
- //依据省设置城市,县
- */
- function selectCity(parent_id,v5) {
- id1= ".sel-province";
- id2= ".sel-city";
- id3= ".sel-area";
- id4= ".sel-street";
- if (v5) {
- id1 += v5;
- id2 += v5;
- id3 += v5;
- id4 += v5;
- }
- var dropElement1 = $('#'+parent_id).find(id1)[0];
- var name = dropElement1.options[dropElement1.selectedIndex].value;
- countyNodes = TopnodeList[dropElement1.selectedIndex];
- var province = $('#'+parent_id).find(id2)[0];
- var city = $('#'+parent_id).find(id3)[0];
- RemoveDropDownList(province);
- RemoveDropDownList(city);
- var citynodes;
- var countycodes;
- if (window.ActiveXObject) {
- citynodes = xmlDoc.selectSingleNode('//address/province [@name="' + name + '"]').childNodes;
- } else {
- citynodes = countyNodes.getElementsByTagName("city")
- }
- if (window.ActiveXObject) {
- countycodes = citynodes[0].childNodes;
- } else {
- countycodes = citynodes[0].getElementsByTagName("county")
- }
-
- if (citynodes.length > 0) {
- //城市
- for (var i = 0; i < citynodes.length; i++) {
- var provinceNode = citynodes[i];
- var option = document.createElement("option");
- option.value = provinceNode.getAttribute("name");
- option.text = provinceNode.getAttribute("name");
- province.add(option);
- }
- if (countycodes.length > 0) {
- //填充选择省份的第一个城市的县列表
- for (var i = 0; i < countycodes.length; i++) {
- var dropElement2 = $('#'+parent_id).find(id2);
- var dropElement3 = $('#'+parent_id).find(id3);
- //取当天省份下第一个城市列表
-
- //alert(cityNode.childNodes.length);
- var option = document.createElement("option");
- option.value = countycodes[i].getAttribute("name");
- option.text = countycodes[i].getAttribute("name");
- dropElement3.add(option);
- }
- }
- selectcounty(parent_id, 0,0,v5);
- }
- }
- /*
- //设置县,区
- */
- function selectcounty(parent_id, v3,v4,v5) {
- id1= ".sel-province";
- id2= ".sel-city";
- id3= ".sel-area";
- id4= ".sel-street";
- if (v5) {
- id1 += v5;
- id2 += v5;
- id3 += v5;
- id4 += v5;
- }
- var dropElement1 = $('#'+parent_id).find(id1)[0];
- var dropElement2 = $('#'+parent_id).find(id2)[0];
- var name = dropElement2.options[dropElement2.selectedIndex].value;
- var dropElement3 = $('#'+parent_id).find(id3)[0];
- var countys = TopnodeList[dropElement1.selectedIndex].getElementsByTagName("city")[dropElement2.selectedIndex].getElementsByTagName("county");
- if (new_area == 1 && open_street == 1) {
- var city_code = TopnodeList[dropElement1.selectedIndex].getElementsByTagName("city")[dropElement2.selectedIndex].getAttribute("code");
- if (city_code) {
- var left = city_code.substring(0,2);
- var xmlUrl = '/static/js/dist/area/list/'+left+'/'+city_code+'.xml';
- xmlCityDoc = loadXmlFile(xmlUrl);
- if (window.ActiveXObject) {
- CityList = xmlCityDoc.selectSingleNode("address").childNodes.childNodes;
- } else {
- CityList = xmlCityDoc.childNodes[0].getElementsByTagName("county");
- }
- }
- }
- RemoveDropDownList(dropElement3);
- if (countys.length > 0) {
- for (var i = 0; i < countys.length; i++) {
- var countyNode = countys[i];
- var option = document.createElement("option");
- option.value = countyNode.getAttribute("name");
- option.text = countyNode.getAttribute("name");
- if(v3==option.value){
- option.selected=true;
- }
- dropElement3.add(option);
- }
- if (new_area == 1 && open_street == 1) {
- selectstreet(parent_id,v4,v5);
- }
- }
- }
- function selectstreet(parent_id,v4,v5) {
- id1= ".sel-province";
- id2= ".sel-city";
- id3= ".sel-area";
- id4= ".sel-street";
- if (v5) {
- id1 += v5;
- id2 += v5;
- id3 += v5;
- id4 += v5;
- }
- var dropElement1 = $('#'+parent_id).find(id1)[0];
- var dropElement2 = $('#'+parent_id).find(id2)[0];
- var name = dropElement2.options[dropElement2.selectedIndex].value;
- var dropElement3 = $('#'+parent_id).find(id3)[0];
- var dropElement4 = $('#'+parent_id).find(id4)[0];
- var area = dropElement3.options[dropElement3.selectedIndex].value;
- var area_code = TopnodeList[dropElement1.selectedIndex].getElementsByTagName("city")[dropElement2.selectedIndex].getElementsByTagName("county")[dropElement3.selectedIndex].getAttribute("code");
- RemoveDropDownList(dropElement4);
-
- if(CityList && CityList.length>0 && area_code != null) {
- for (var i = 0; i < CityList.length; i++) {
- var county = CityList[i];
- var county_code = county.getAttribute("code");
- if(county_code == area_code){
- var streetlist = county.getElementsByTagName("street");
- for (var m = 0; m < streetlist.length; m++) {
- var street = streetlist[m];
- var option = document.createElement("option");
- option.value = street.getAttribute("name");
- option.text = street.getAttribute("name");
- if (v4 == option.value) {
- option.selected = true;
- nodeindex = m;
- }
- dropElement4.add(option);
- }
- }
- }
- }else{
- var option = document.createElement("option");
- option.value = '请选择街道/镇';
- option.text = '请选择街道/镇';
- dropElement4.add(option);
- }
- }
- function RemoveDropDownList(obj) {
- if (obj && obj.options) {
- var len = obj.options.length;
- if (len > 0) {
- for (var i = len; i >= 0; i--) {
- obj.remove(i);
- }
- }
- }
- }
- /*
- //读取xml文件
- */
- function loadXmlFile(xmlFile) {
- var xmlDom = null;
- if (window.ActiveXObject) {
- xmlDom = new ActiveXObject("Microsoft.XMLDOM");
- xmlDom.async = false;
- xmlDom.load(xmlFile) || xmlDom.loadXML(xmlFile);//如果用的是XML字符串//如果用的是xml文件
- } else if (document.implementation && document.implementation.createDocument) {
- var xmlhttp = new window.XMLHttpRequest();
- xmlhttp.open("GET", xmlFile, false);
- xmlhttp.send(null);
- xmlDom = xmlhttp.responseXML;
- } else {
- xmlDom = null;
- }
- return xmlDom;
- }
|