<td>
<div class="field">
<select name="province" otitle="常住城市"
id="shen" onchange="changeProvince();" >
<option value="" otitle="常住城市">
请选择省份
</option>
</select>
<select name="city" id="shi" onchange="getPreminuByCity();"otitle="常住城市">
<option value="" otitle="常住城市">
请选择城市
</option>
</select>
</div>
</td>
</tr>
<tr>
<th valign="top">
选择金额
</th>
<td>
<div class="field">
<select name="preminuId" id="preminuId"
<option value="" otitle="金额">
请选择
</option>
</select>
</div>
</td>
</tr>
var provinceInfos = new Array();//二维数组
var provinceInfos2 = new Array();//三维数组
var i = 0;
var j = 0;
var k = 0;
/***********************************************初始化数组*********************************************************/
<c:forEach var="provinceInfo" items="${provinceInfos}">
document.getElementById("shen")[i+1] = new Option('<c:out value="${provinceInfo.name}"/>');
document.getElementById("shen")[i+1].value = '<c:out value="${provinceInfo.code}"/>';
document.getElementById("shen")[i+1].id = i;
provinceInfos[i] = new Array();
provinceInfos2[i] = new Array();
j = 0;
<c:forEach var="cityInfo" items="${provinceInfo.citys}">
provinceInfos[i][j] = '<c:out value="${cityInfo.name}"/>' +":"+'<c:out value="${cityInfo.code}"/>';
provinceInfos2[i][j] = new Array();
k = 0;
<c:forEach var="premiumInfo" items="${cityInfo.premium}">
provinceInfos2[i][j][k] = '<c:out value="${premiumInfo}"/>';
k = k + 1;
</c:forEach>
j = j + 1;
</c:forEach>
i = i + 1;
</c:forEach>
//改变省份触发
function changeProvince(){
//一进来就还原..
document.getElementById("shi").options.length = 1;
//var length = document.getElementById("shen").length;
var selectValue = document.getElementById("shen").value;
if(selectValue!=''){
//第一种方法
/*
for(var i = 0; i<length; i++){
if(document.getElementById("shen")[i].value == selectValue){
for(var j=0; j<provinceInfos[i-1].length; j++){
var cityInfo = provinceInfos[i-1][j].split(':');
document.getElementById("shi")[j+1] = new Option(cityInfo[0]);
document.getElementById("shi")[j+1].value = cityInfo[1];
}
break;
}
}*/
//第二种方法
var selectIndex = document.getElementById("shen").selectedIndex;
for(var j=0; j<provinceInfos[selectIndex-1].length; j++){
var cityInfo = provinceInfos[selectIndex-1][j].split(':');
document.getElementById("shi")[j+1] = new Option(cityInfo[0]);
document.getElementById("shi")[j+1].value = cityInfo[1];
}
//默认选中第一个诚市
document.getElementById("shi")[1].selected = true;
}
//费用也跟着连动.
getPreminuByCity();
}
//改变城市触发
function getPreminuByCity(){
//一进来就还原..
document.getElementById("preminuId").options.length = 1;
if(document.getElementById("shi").value != ''){
var provinceIndex = document.getElementById("shen").selectedIndex;
var cityIndex = document.getElementById("shi").selectedIndex;
for(var i = 0; i<provinceInfos2[provinceIndex-1][cityIndex-1].length; i++){
document.getElementById("preminuId")[i+1] = new Option(provinceInfos2[provinceIndex-1][cityIndex-1][i]);
document.getElementById("preminuId")[i+1].value = provinceInfos2[provinceIndex-1][cityIndex-1][i];
}
//默认选中第一个
document.getElementById("preminuId")[1].selected = true;
}
}
新的:
//改变省份触发
function changeProvince(province, cityStr, preminuStr){
//一进来就还原城市..
var city = document.getElementById(cityStr);
city.options.length = 1;
//
var shenIndex = province.selectedIndex;
if(shenIndex > 0) {
for(var j=0; j<provinceInfos[shenIndex-1].length; j++){
var cityInfo = provinceInfos[shenIndex-1][j].split(':');
city[j+1] = new Option(cityInfo[0]);
city[j+1].value = cityInfo[1];
}
//默认选中第一个诚市
city[1].selected = true;
}
//费用也跟着连动.
getPreminuByCity(province.id, city, preminuStr);
}
//改变城市触发
function getPreminuByCity(provinceStr, city, preminuStr){
//一进来就还原..
var preminu = document.getElementById(preminuStr);
var province = document.getElementById(provinceStr);
preminu.options.length = 1;
var provinceIndex = province.selectedIndex;
var cityIndex = city.selectedIndex;
if(provinceIndex > 0 && cityIndex > 0){
for(var i = 0; i<provinceInfos2[provinceIndex-1][cityIndex-1].length; i++){
var preminuId = provinceInfos2[provinceIndex-1][cityIndex-1][i];
preminu[i+1] = new Option(Math.floor(preminuId));
preminu[i+1].value = preminuId;
}
//默认选中第一个
preminu[1].selected = true;
}
}
分享到:
相关推荐
本代码实现了 省地县三级联动展现,从xml文件中读取省地县的数据。
运用 javascript 实现 三级联动 简单明了 可以根据 需要改成2级 或复杂的多级 只要思路清晰
NULL 博文链接:https://raulhjf.iteye.com/blog/1455219
经典的用javascript实现的三级联动选单功能。实用价值不用多说了。
三级联动
用javaScript 实现三级联动 经典实例 js javaScript 三级联动 js javaScript 三级联动 js javaScript 三级联动
jsp中用js代码实现了简易的三级联动功能
使用js实现了二级,三级,联动的一个小李子。不错,与大家分享一下。
简单的三级联动菜单,可优化。。。。。。。。。。。。
Ajax JavaWeb JS 三级联动 Ajax JavaWeb JS 三级联动 Ajax JavaWeb JS 三级联动
三级联动实现选择全国专业效果,数据来源于scrapy爬取的某高考网站,内含数据文件。采用了JavaScript的重载功能
NULL 博文链接:https://liangq.iteye.com/blog/1457926
利用js实现的省市区三级联动,php技术 非链接数据库
实现移动端省市区三级联动选择器,使用js实现三级联动的效果
纯用javascript实现的ajax三级联动无刷新,数据传送采用json格式,开发平台采用vs2010 asp.net,压缩包含有sql脚本
能够实现联动功能,很方便,很管用,不管你信不信,反正我信了
省市区三级联动 , JavaScript 省市区三级联动 json文件,JavaScript 省市区三级联动 json文件
js省市地区三级联动
js实现省地区三级联动。省市地区实现三级联动,是经常要用到
用js实现三级联动 非常方便 这里是一个用js描述的文件 完全用js来实现,给不想使用ajax的朋友提供了方便。