用jquery写的json省市县三级联动下拉

<form action="#" name="myform">
	<label>省</label><select name="provice" id="provice"><option value="-1">请输入省份</option></select>
	<label>市</label><select name="city" id="city"><option value="-1">请输入城市</option></select>
	<label>县</label><select name="locale" id="locale"><option value="-1">请输入区县</option></select>
</form>

2. 定义json数据源:

var jsonData = [{
    treeNode : '请输入省份',
    value : -1,
    childNode : [{
	treeNode : '请输入城市',
	value : -1,
	childNode : [{
	        treeNode : '请输入区县',
		value : -1,
		childNode : [] 
	}]
    }]	
},{
    treeNode : '北京',
    value : 1,
    childNode : [{
	treeNode : '东城区',
	value : 11,
	childNode : []
    },{
	treeNode : '西城区',
	value : 12,
	childNode : []
    }]
},{
    treeNode : '广西壮族自治区',
    value : 2601,
    childNode : [{
	treeNode : '南宁',
	value : 6653,
	childNode : [{
		treeNode : '横县',
		value : 10799,
		childNode : []
	}, {
		treeNode : '宾阳县',
		value : 10800,
		childNode : []
        }]
    }]
}]

3. javascript代码:

function initCountry(){
	var provice = $("#provice");
	var city = $("#city");
	var locale = $("#locale");
	var proviceStr = "";
	$.each(jsonData,function(index,items){
		proviceStr += "<option value='"+jsonData[index].value+"'>"+jsonData[index].treeNode+"</option>";
	});
	provice.empty().append(proviceStr);
	provice.bind("change",function(){
		if($(this).find(":selected").attr("value") == -1){		
			city.empty().append("<option value='-1'>请输入区县</option>");
		}
	});
	provice.bind("change",function(){
		var cityStr = '';
		var index = provice.find(":selected").index();
		$.each(jsonData[index].childNode,function(index,items){
			city.empty();
			cityStr += "<option value='"+items.value+"'>"+items.treeNode+"</option>";
			city.append(cityStr);
		})
		changeLocale();
	});
	city.bind("change",changeLocale);
	function changeLocale(){
		var localeStr = '';
		var index = provice.find(":selected").index();
		var index2 = city.find(":selected").index();
		$.each(jsonData[index].childNode[index2].childNode,function(index,items){
			locale.empty();
			localeStr += "<option value='"+items.value+"'>"+items.treeNode+"</option>";
			locale.append(localeStr);
		})
		if(localeStr == ''){
			locale.empty();
			locale.append("<option value='-11'>请输入区县</option>");
		}
	}
}
$(function(){
	initCountry();
	
})



  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值