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

/**
* @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; }