Jquery实现省市区联动
利用jquery实现从xml读取省市区信息联动插件。
备注:代码中是读取xml/province_city.xml,视情况自行修改。
/**
* jQuery : 省市县联动插件
* @author kxt
* @example $("#test").province_city_county();
*/
$.fn.province_city_county = function(v_province,v_city,v_county){
var _self = this;
//插入3个空的下拉框
//_self.append("<select id='province' name='province'></select>");
//_self.append("<select id='city' name='city'></select>");
//_self.append("<select id='county' name='county'></select>");
_self.html("<select id='province' name='province' style='width: 100px'></select>" +
"<select id='city' name='city' style='width: 100px'></select>" +
"<select id='county' name='county' style='width: 100px'></select>");
//分别获取3个下拉框
var sel1 = _self.find("select").eq(0);
var sel2 = _self.find("select").eq(1);
var sel3 = _self.find("select").eq(2);
//定义3个默认值
_self.data("province",["请选择", ""]);
_self.data("city",["请选择", ""]);
_self.data("county",["请选择", ""]);
//默认省级下拉
if(_self.data("province")){
sel1.append("<option value='"+_self.data("province")[1]+"'>"+_self.data("province")[0]+"</option>");
}
//默认城市下拉
if(_self.data("city")){
sel2.append("<option value='"+_self.data("city")[1]+"'>"+_self.data("city")[0]+"</option>");
}
//默认县区下拉
if(_self.data("county")){
sel3.append("<option value='"+_self.data("county")[1]+"'>"+_self.data("county")[0]+"</option>");
}
$.get('js/province_city.xml', function(data){
var arrList = [];
$(data).find('province').each(function(){
var $province = $(this);
sel1.append("<option value='"+$province.attr('value')+"'>"+$province.attr('value')+"</option>");
});
if(typeof v_province != 'undefined'){
sel1.val(v_province);
sel1.change();
}
});
//省级联动控制
var index1 = "" ;
var provinceValue = "";
var cityValue = "";
sel1.change(function(){
//清空其它2个下拉框
sel2[0].options.length=0;
sel3[0].options.length=0;
index1 = this.selectedIndex;
if(index1 == 0){ //当选择的为 "请选择" 时
if(_self.data("city")){
sel2.append("<option value='"+_self.data("city")[1]+"'>"+_self.data("city")[0]+"</option>");
}
if(_self.data("county")){
sel3.append("<option value='"+_self.data("county")[1]+"'>"+_self.data("county")[0]+"</option>");
}
} else{
provinceValue = $('#province').val();
$.get('js/province_city.xml', function(data){
$(data).find("province[value='"+provinceValue+"'] > city").each(function(){
var $city = $(this);
sel2.append("<option value='"+$city.attr('value')+"'>"+$city.attr('value')+"</option>");
});
cityValue = $("#city").val();
$(data).find("city[value='"+cityValue+"'] > county").each(function(){
var $county = $(this);
sel3.append("<option value='"+$county.attr('value')+"'>"+$county.attr('value')+"</option>");
});
if(typeof v_city != 'undefined'){
sel2.val(v_city);
sel2.change();
}
if(typeof v_county != 'undefined'){
sel3.val(v_county);
}
});
}
}).change();
//城市联动控制
sel2.change(function(){
sel3[0].options.length=0;
var cityValue2 = $('#city').val();
$.get('js/province_city.xml', function(data){
$(data).find("city[value='"+cityValue2+"'] > county").each(function(){
var $county = $(this);
sel3.append("<option value='"+$county.attr('value')+"'>"+$county.attr('value')+"</option>");
});
if(typeof v_county != 'undefined'){
sel3.val(v_county);
}
});
}).change();
return _self;
};
相关推荐
专注前端开发 2020-10-21
苏康申 2020-11-13
vitasfly 2020-11-12
oraclemch 2020-11-06
liuyang000 2020-09-25
FellowYourHeart 2020-10-05
赵继业 2020-08-17
whyname 2020-08-16
Seandba 2020-08-16
dbasunny 2020-08-16
拼命工作好好玩 2020-08-15
langyue 2020-08-15
写程序的赵童鞋 2020-08-03
Accpcjg 2020-08-02
tydldd 2020-07-30
好记忆也需烂 2020-07-28
jianghero 2020-07-28