You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
166 lines
6.0 KiB
166 lines
6.0 KiB
/**
|
|
|
|
* @name jQuery Cascdejs plugin
|
|
|
|
* @author zdy
|
|
|
|
* @version 1.0
|
|
|
|
*/
|
|
|
|
|
|
|
|
//首先需要初始化
|
|
|
|
var xmlDoc;
|
|
|
|
var TopnodeList;
|
|
|
|
var citys;
|
|
|
|
var countyNodes;
|
|
|
|
var nodeindex = 0;
|
|
|
|
var childnodeindex = 0;
|
|
|
|
//获取xml文件
|
|
|
|
function cascdeInit(v1,v2,v3) {
|
|
|
|
//打开xlmdocm文档
|
|
|
|
xmlDoc = loadXmlFile('./resource/components/area/Area.xml');
|
|
|
|
var dropElement1 = document.getElementById("sel-provance");
|
|
|
|
var dropElement2 = document.getElementById("sel-city");
|
|
|
|
var dropElement3 = document.getElementById("sel-area");
|
|
|
|
RemoveDropDownList(dropElement1);
|
|
|
|
RemoveDropDownList(dropElement2);
|
|
|
|
RemoveDropDownList(dropElement3);
|
|
|
|
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(v3);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
|
|
//依据省设置城市,县
|
|
|
|
*/
|
|
|
|
function selectCity() {
|
|
|
|
var dropElement1 = document.getElementById("sel-provance");
|
|
|
|
var name = dropElement1.options[dropElement1.selectedIndex].value;
|
|
|
|
countyNodes = TopnodeList[dropElement1.selectedIndex];
|
|
|
|
var province = document.getElementById("sel-city");
|
|
|
|
var city = document.getElementById("sel-area");
|
|
|
|
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 = document.getElementById("sel-city");
var dropElement3 = document.getElementById("sel-area");
//取当天省份下第一个城市列表
//alert(cityNode.childNodes.length);
var option = document.createElement("option");
option.value = countycodes[i].getAttribute("name");
option.text = countycodes[i].getAttribute("name");
dropElement3.add(option);
}
}
}
}
/*
//设置县,区
*/
function selectcounty(v3) {
var dropElement1 = document.getElementById("sel-provance");
var dropElement2 = document.getElementById("sel-city");
var name = dropElement2.options[dropElement2.selectedIndex].value;
var city = document.getElementById("sel-area");
var countys = TopnodeList[dropElement1.selectedIndex].getElementsByTagName("city")[dropElement2.selectedIndex].getElementsByTagName("county")
RemoveDropDownList(city);
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;
}
city.add(option);
}
}
function RemoveDropDownList(obj) {
if (obj) {
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;
}
|