select
三级联动
获取从服务器端传回的数据,将其保存为对象
保存的数据格式为:
var provinceList = [
{name:'北京', cityList:[
{name:'市辖区', areaList:['东城区','西城区','崇文区','宣武区','朝阳区','丰台区','石景山区','海淀区','门头沟区','房山区','通州区','顺义区','昌平区','大兴区','怀柔区','平谷区']},
{name:'县', areaList:['密云县','延庆县']}
]},
{name:'上海', cityList:[
{name:'市辖区', areaList:['黄浦区','卢湾区','徐汇区','长宁区','静安区','普陀区','闸北区','虹口区','杨浦区','闵行区','宝山区','嘉定区','浦东新区','金山区','松江区','青浦区','南汇区','奉贤区']},
{name:'县', areaList:['崇明县']}
]}
]
var selectList = [];
function initData(data) {
$.each(data, function (i, d) {
var normList = {
norm:"",
majorList:[]
};
normList.norm = d.norm +"-"+ d.norm_name;
$.each(JSON.parse(d.template), function (ii, dd) {
var major = {
major:"",
typeList:[]
};
switch (ii){
case "jianan":
major.major = "建安投资";
break;
case "daitan":
major.major = "待摊投资";
break;
case "other":
major.major = "其他投资";
break;
case "shebei":
major.major = "设备投资";
break;
}
$.each(dd, function (index, item) {
major.typeList.push(item.major);
});
normList.majorList.push(major);
});
selectList.push(normList);
});
}
三级联动数据处理
//三级联动
var addressInit = function(_cmbProvince, _cmbCity, _cmbArea, defaultProvince, defaultCity, defaultArea)
{
var cmbProvince = document.getElementById(_cmbProvince);
var cmbCity = document.getElementById(_cmbCity);
var cmbArea = document.getElementById(_cmbArea);
function cmbSelect(cmb, str)
{
for(var i=0; i<cmb.options.length; i++)
{
if(cmb.options[i].value == str)
{
cmb.selectedIndex = i;
return;
}
}
}
function cmbAddOption(cmb, str, obj)
{
var option = document.createElement("OPTION");
cmb.options.add(option);
option.innerText = str;
option.value = str;
option.obj = obj;
}
function changeCity()
{
cmbArea.options.length = 0;
if(cmbCity.selectedIndex == -1)return;
var item = cmbCity.options[cmbCity.selectedIndex].obj;
for(var i=0; i<item.typeList.length; i++)
{
cmbAddOption(cmbArea, item.typeList[i], null);
}
cmbSelect(cmbArea, defaultArea);
}
function changeProvince()
{
cmbCity.options.length = 0;
cmbCity.onchange = null;
if(cmbProvince.selectedIndex == -1)return;
var item = cmbProvince.options[cmbProvince.selectedIndex].obj;
for(var i=0; i<item.majorList.length; i++)
{
cmbAddOption(cmbCity, item.majorList[i].major, item.majorList[i]);
}
cmbSelect(cmbCity, defaultCity);
changeCity();
cmbCity.onchange = changeCity;
}
for(var i=0; i<selectList.length; i++)
{
cmbAddOption(cmbProvince, selectList[i].norm, selectList[i]);
}
cmbSelect(cmbProvince, defaultProvince);
changeProvince();
cmbProvince.onchange = changeProvince;
}