<form name="dataForm" id="dataForm" action="" method="POST" target="dataFrame" style="margin: 0">
<div class="InnerDiv" style="width: 780px;">
<table align=right border=0 style="height:150; width:100%">
<tr>
<td nowrap align=right>所在省份:</td>
<td><select name=province style="width:100px" ><base:optionsFromCode codeId="provinceName"/></select></td>
<td nowrap align=right>所在城市:</td>
<td><input name="city" style="width:100px"></td>
</tr>
</table>
</div>
</form> var areaList={
"100":[["选择城区"],["东城区"],["西城区"],["崇文区"],["宣武区"],["朝阳区"],["丰台区" ],["石景山区" ],["海淀区" ],["门头沟区" ],["房山区" ],["通州区" ],["顺义区" ],["延庆县" ],["昌平县" ],["怀柔县" ],["密云县" ],["平谷县" ],["大兴县" ]],
"200":[["选择城区"],["和平区" ],["河东区" ],["河西区" ],["南开区" ],["河北区" ],["红桥区" ],["塘沽区" ],["大港区" ],["汉沽区" ],["东丽区" ],["西青区" ],["津南区" ],["北辰区" ],["蓟县","22"],["宝坻县" ],["武清县" ],["宁河县" ],["静海县" ]],
"300":[["选择城区"],["南市区" ],["卢湾区" ],["徐汇区" ],["长宁区" ],["静安区" ],["普陀区" ],["闸北区" ],["虹口区" ],["杨浦区" ],["闵行区" ],["宝山区" ],["嘉定区" ],["浦东新区" ],["金山区" ],["松江区" ],["崇明县" ],["青浦县" ],["南汇县" ],["奉贤县" ],["黄浦区" ]]
};
province在数据库存的有值,100代表北京,200代表天津,300代表上海,city也是数值存入数据库,如东城区为101,西城区为102,和平区为201等等
要在javascript里定义事件函数.怎么才能让省份和城市产生连动,选择省份就会有相应的城市对应在里面,求高手解答下
<div class="InnerDiv" style="width: 780px;">
<table align=right border=0 style="height:150; width:100%">
<tr>
<td nowrap align=right>所在省份:</td>
<td><select name=province style="width:100px" ><base:optionsFromCode codeId="provinceName"/></select></td>
<td nowrap align=right>所在城市:</td>
<td><input name="city" style="width:100px"></td>
</tr>
</table>
</div>
</form> var areaList={
"100":[["选择城区"],["东城区"],["西城区"],["崇文区"],["宣武区"],["朝阳区"],["丰台区" ],["石景山区" ],["海淀区" ],["门头沟区" ],["房山区" ],["通州区" ],["顺义区" ],["延庆县" ],["昌平县" ],["怀柔县" ],["密云县" ],["平谷县" ],["大兴县" ]],
"200":[["选择城区"],["和平区" ],["河东区" ],["河西区" ],["南开区" ],["河北区" ],["红桥区" ],["塘沽区" ],["大港区" ],["汉沽区" ],["东丽区" ],["西青区" ],["津南区" ],["北辰区" ],["蓟县","22"],["宝坻县" ],["武清县" ],["宁河县" ],["静海县" ]],
"300":[["选择城区"],["南市区" ],["卢湾区" ],["徐汇区" ],["长宁区" ],["静安区" ],["普陀区" ],["闸北区" ],["虹口区" ],["杨浦区" ],["闵行区" ],["宝山区" ],["嘉定区" ],["浦东新区" ],["金山区" ],["松江区" ],["崇明县" ],["青浦县" ],["南汇县" ],["奉贤县" ],["黄浦区" ]]
};
province在数据库存的有值,100代表北京,200代表天津,300代表上海,city也是数值存入数据库,如东城区为101,西城区为102,和平区为201等等
要在javascript里定义事件函数.怎么才能让省份和城市产生连动,选择省份就会有相应的城市对应在里面,求高手解答下
<!-- ###中国省市二级联动菜单开始##
function Dsy()
{
this.Items = {};
}
Dsy.prototype.add = function(id,iArray)
{
this.Items[id] = iArray;
}
Dsy.prototype.Exists = function(id)
{
if(typeof(this.Items[id]) == "undefined") return false;
return true;
}function change(v){
var str="0";
for(i=0;i<v;i++){ str+=("_"+(document.getElementById(s[i]).selectedIndex-1));};
var ss=document.getElementById(s[v]);
with(ss){
length = 0;
options[0]=new Option(opt0[v],opt0[v]);
if(v && document.getElementById(s[v-1]).selectedIndex>0 || !v)
{
if(dsy.Exists(str)){
ar = dsy.Items[str];
for(i=0;i<ar.length;i++)options[length]=new Option(ar[i],ar[i]);
if(v)options[1].selected = true;
}
}
if(++v<s.length){change(v);}
}
}var dsy = new Dsy();dsy.add("0",["北京市","天津市","河北省","山西省","内蒙古","辽宁省","吉林省","黑龙江省","上海市"," 江苏省","浙江省","安徽省","福建省","江西省","山东省","河南省","湖北省","湖南省","广东省","广西自治区","海南省","重庆市","四川省","贵州省","云南省","西藏自治区","陕西省","甘肃省","青海省","宁夏回族自治区","新疆维吾尔自治区","香港特别行政区","澳门特别行政区","台湾省","其它"]);dsy.add("0_0",["北京","东城区","西城区","崇文区","宣武区","朝阳区","丰台区","石景山区"," 海淀区(中关村)","门头沟区","房山区","通州区","顺义区","昌平区","大兴区","怀柔区","平谷区","密云县","延庆县"," 其他"]);
dsy.add("0_1",["和平区","河东区","河西区","南开区","红桥区","塘沽区","汉沽区","大港区","西青区","津南区","武清区","蓟县","宁河县","静海县","其他"]);
dsy.add("0_2",["石家庄市","张家口市","承德市","秦皇岛市","唐山市","廊坊市","衡水市","沧州市","邢台市","邯郸市","保定市","其他"]);
dsy.add("0_3",["太原市","朔州市","大同市","长治市","晋城市","忻州市","晋中市","临汾市","吕梁市","运城市","其他"]);
dsy.add("0_4",["呼和浩特市","包头市","赤峰市","呼伦贝尔市","鄂尔多斯市","乌兰察布市","巴彦淖尔市","兴安盟","阿拉善盟","锡林郭勒盟","其他"]);
dsy.add("0_5",["沈阳市","朝阳市","阜新市","铁岭市","抚顺市","丹东市","本溪市","辽阳市","鞍山市","大连市","营口市","盘锦市","锦州市","葫芦岛市","其他"]);
dsy.add("0_6",["长春市","白城市","吉林市","四平市","辽源市","通化市","白山市","延边朝鲜族自治州","其他"]);
dsy.add("0_7",["哈尔滨市","七台河市","黑河市","大庆市","齐齐哈尔市","伊春市","佳木斯市","双鸭山市","鸡西市","大兴安岭地区(加格达奇)","牡丹江","鹤岗市","绥化市 ","其他"]);
dsy.add("0_8",["黄浦区","卢湾区","徐汇区","长宁区","静安区","普陀区","闸北区","虹口区","杨浦区","闵行区","宝山区","嘉定区","浦东新区","金山区","松江区","青浦区","南汇区","奉贤区","崇明县","其他"]);
dsy.add("0_9",["南京市","徐州市","连云港市","宿迁市","淮安市","盐城市","扬州市","泰州市","南通市","镇江市","常州市","无锡市","苏州市","其他"]);
dsy.add("0_10",["杭州市","湖州市","嘉兴市","舟山市","宁波市","绍兴市","衢州市","金华市","台州市","温州市","丽水市","其他"]);
dsy.add("0_11",["合肥市","宿州市","淮北市","亳州市","阜阳市","蚌埠市","淮南市","滁州市","马鞍山市","芜湖市","铜陵市","安庆市","黄山市","六安市","巢湖市","池州市","宣城市","其他"]);
dsy.add("0_12",["福州市","南平市","莆田市","三明市","泉州市","厦门市","漳州市","龙岩市","宁德市","其他"]);
dsy.add("0_13",["南昌市","九江市","景德镇市","鹰潭市","新余市","萍乡市","赣州市","上饶市","抚州市","宜春市","吉安市","其他"]);
dsy.add("0_14",["济南市","聊城市","德州市","东营市","淄博市","潍坊市","烟台市","威海市","青岛市","日照市","临沂市","枣庄市","济宁市","泰安市","莱芜市","滨州市","菏泽市","其他"]);
dsy.add("0_15",["郑州市","三门峡市","洛阳市","焦作市","新乡市","鹤壁市","安阳市","濮阳市","开封市","商丘市","许昌市","漯河市","平顶山市","南阳市","信阳市","周口市","驻马店市","其他"]);
dsy.add("0_16",["武汉市","十堰市","襄樊市","荆门市","孝感市","黄冈市","鄂州市","黄石市","咸宁市","荆州市","宜昌市","随州市","恩施土家族苗族自治州","仙桃市","天门市","潜江市","神农架林区","其他"]);
dsy.add("0_17",["长沙市","张家界市","常德市","益阳市","岳阳市","株洲市","湘潭市","衡阳市","郴州市","永州市","邵阳市","怀化市","娄底市","湘西土家族苗族自治州","其他"]);
dsy.add("0_18",["广州市","清远市市","韶关市","河源市","梅州市","潮州市","汕头市","揭阳市","汕尾市"," 惠州市","东莞市","深圳市","珠海市","中山市","江门市","佛山市","肇庆市","云浮市","阳江市","茂名市","湛江市"," 其他"]);
dsy.add("0_19",["南宁市","桂林市","柳州市","梧州市","贵港市","玉林市","钦州市","北海市","防城港市","崇左市","百色市","河池市","来宾市","贺州市","其他"]);
dsy.add("0_20",["海口市","三亚市","其他"]);
dsy.add("0_21",["渝中区","大渡口区","江北区","沙坪坝区","九龙坡区","南岸区","北碚区","万盛区","双桥区","渝北区","巴南区","万州区","涪陵区","黔江区","长寿区","合川市","永川市","江津市","南川市","綦江县","潼南县","铜梁县","大足县","璧山县","垫江县","武隆县","丰都县","城口县","开县","巫溪县","巫山县","奉节县","云阳县","忠县","石柱土家族自治县","彭水苗族土家族自治县","酉阳土家族苗族自治县","秀山土家族苗族自治县","其他"]);
dsy.add("0_22",["成都市","广元市","绵阳市","德阳市","南充市","广安市","遂宁市","内江市","乐山市","自贡市","泸州市","宜宾市","攀枝花市","巴中市","资阳市","眉山市","雅安","阿坝藏族羌族自治州","甘孜藏族自治州","凉山彝族自治州县","其他"]);
dsy.add("0_23",["贵阳市","六盘水市","遵义市","安顺市","毕节地区","铜仁地区","黔东南苗族侗族自治州","黔南布依族苗族自治州","黔西南布依族苗族自治州","其他"]);
dsy.add("0_24",["昆明市","曲靖市","玉溪市","保山市","昭通市","丽江市","普洱市","临沧市","宁德市","德宏傣族景颇族自治州","怒江傈僳族自治州","楚雄彝族自治州","红河哈尼族彝族自治州","文山壮族苗族自治州","大理白族自治州","迪庆藏族自治州","西双版纳傣族自治州","其他"]);
dsy.add("0_25",["拉萨市","那曲地区","昌都地区","林芝地区","山南地区","日喀则地区","阿里地区","其他"]);
dsy.add("0_26",["西安市","延安市","铜川市","渭南市","咸阳市","宝鸡市","汉中市","安康市","商洛市","其他"]);
dsy.add("0_27",["兰州市 ","嘉峪关市","金昌市","白银市","天水市","武威市","酒泉市","张掖市","庆阳市","平凉市","定西市","陇南市","临夏回族自治州","甘南藏族自治州","其他"]);
dsy.add("0_28",["西宁市","海东地区","海北藏族自治州","黄南藏族自治州","玉树藏族自治州","海南藏族自治州","果洛藏族自治州","海西蒙古族藏族自治州","其他"]);
dsy.add("0_29",["银川市","石嘴山市","吴忠市","固原市","中卫市","其他"]);
dsy.add("0_30",["乌鲁木齐市","克拉玛依市","喀什地区","阿克苏地区","和田地区","吐鲁番地区","哈密地区","塔城地区","阿勒泰地区","克孜勒苏柯尔克孜自治州","博尔塔拉蒙古自治州","昌吉回族自治州伊犁哈萨克自治州","巴音郭楞蒙古自治州","河子市","阿拉尔市","五家渠市","图木舒克市","其他"]);
dsy.add("0_31",["香港","其他"]);
dsy.add("0_31",["澳门","其他"])
dsy.add("0_32",["台湾","其他"])
//-->
</SCRIPT>
<SCRIPT LANGUAGE = JavaScript>
var s=["s1","s2"];
var opt0 = ["请选择","请选择"];
function setup()
{
for(i=0;i<s.length-1;i++)
document.getElementById(s[i]).onchange=new Function("change("+(i+1)+")");
change(0);
}
//##联动菜单结束-->
</SCRIPT>调用:<select name="lz_sf" id="s1">
<option></option></select>
<select name="lz_sx" id="s2">
<option></option></select>
<script language="javascript">
setup()
</script>
你可以用jquery,或者原始方法写个,很简单的!
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>test</title>
<script>
var areaList={
"v100":[["选择城区"],["东城区"],["西城区"],["崇文区"],["宣武区"],["朝阳区"],["丰台区" ],["石景山区" ],["海淀区" ],["门头沟区" ],["房山区" ],["通州区" ],["顺义区" ],["延庆县" ],["昌平县" ],["怀柔县" ],["密云县" ],["平谷县" ],["大兴县" ]],
"v200":[["选择城区"],["和平区" ],["河东区" ],["河西区" ],["南开区" ],["河北区" ],["红桥区" ],["塘沽区" ],["大港区" ],["汉沽区" ],["东丽区" ],["西青区" ],["津南区" ],["北辰区" ],["蓟县","22"],["宝坻县" ],["武清县" ],["宁河县" ],["静海县" ]],
"v300":[["选择城区"],["南市区" ],["卢湾区" ],["徐汇区" ],["长宁区" ],["静安区" ],["普陀区" ],["闸北区" ],["虹口区" ],["杨浦区" ],["闵行区" ],["宝山区" ],["嘉定区" ],["浦东新区" ],["金山区" ],["松江区" ],["崇明县" ],["青浦县" ],["南汇县" ],["奉贤县" ],["黄浦区" ]]
};function province_change(v){
var city = document.getElementById("city");
city.innerHTML = "";
eval("var citys = areaList.v"+v+";");
for(var i=0;i<citys.length;i++){
city.add(new Option(citys[i],citys[i]));
}
}
</script>
</head><body onload="province_change(document.getElementById('province').value)">
<form name="dataForm" id="dataForm" action="" method="POST" target="dataFrame" style="margin: 0">
<div class="InnerDiv" style="width: 780px;">
<table align=right border=0 style="height:150; width:100%">
<tr>
<td nowrap align=right>所在省份: </td>
<td> <select name=province id=province style="width:100px" onchange="province_change(this.value)">
<option value=100>北京</option>
<option value=200>天津</option>
<option value=300>上海</option>
</select> </td>
<td nowrap align=right>所在城市: </td>
<td> <select name=city id=city></select> </td>
</tr>
</table>
</div>
</form> </body></html>建议lz放数据的时候再做点手脚
"v100":[["选择城区_"],["东城区_101"],["西城区_102"],["崇文区_103],....],
就是把城市的ID和名称放一起,通过JS再去解析
在我的例子中,city.add(new Option(citys[i].split("_")[0],citys[i].split("_")[1]));即可
毕竟省市数据不会经常变动的。除非数组实在特别大或者需要经常维护。
<china>
<province name="北京" cities="北京"/>
<province name="上海" cities="上海"/>
<province name="天津" cities="天津"/>
<province name="重庆" cities="重庆"/>
<province name="安徽" cities="安庆 蚌埠 巢湖 池州 滁州 阜阳 合肥 淮北 淮南 黄山 六安 马鞍山 宿州 铜陵 芜湖 宣城 亳州"/> <province name="福建" cities="福州 龙岩 南平 宁德 莆田 泉州 三明 厦门 漳州"/> <province name="甘肃" cities="白银 定西 甘南藏族自治州 嘉峪关 金昌 酒泉 兰州 临夏回族自治州 陇南 平凉 庆阳 天水 武威 张掖"/> <province name="广东" cities="潮州 东莞 佛山 广州 河源 惠州 江门 揭阳 茂名 梅州 清远 汕头 汕尾 韶关 深圳 阳江 云浮 湛江 肇庆 中山 珠海"/> <province name="广西" cities="百色 北海 崇左 防城港 桂林 贵港 河池 贺州 来宾 柳州 南宁 钦州 梧州 玉林"/> <province name="贵州" cities="安顺 毕节 贵阳 六盘水 黔东南苗族侗族自治州 黔南布依族苗族自治州 黔西南布依族苗族自治州 铜仁 遵义"/> <province name="海南" cities="白沙黎族自治县 保亭黎族苗族自治县 昌江黎族自治县 澄迈县 定安县 东方 海口 乐东黎族自治县 临高县 陵水黎族自治县 琼海 琼中黎族苗族自治县 三亚 屯昌县 万宁 文昌 五指山 儋州"/> <province name="河北" cities="保定 沧州 承德 邯郸 衡水 廊坊 秦皇岛 石家庄 唐山 邢台 张家口"/> <province name="河南" cities="安阳 鹤壁 济源 焦作 开封 洛阳 南阳 平顶山 三门峡 商丘 新乡 信阳 许昌 郑州 周口 驻马店 漯河 濮阳"/> <province name="黑龙江" cities="大庆 大兴安岭 哈尔滨 鹤岗 黑河 鸡西 佳木斯 牡丹江 七台河 齐齐哈尔 双鸭山 绥化 伊春"/> <province name="湖北" cities="武汉 鄂州 恩施土家族苗族自治州 黄冈 黄石 荆门 荆州 潜江 神农架林区 十堰 随州 天门 仙桃 咸宁 襄樊 孝感 宜昌"/> <province name="湖南" cities="长沙 常德 郴州 衡阳 怀化 娄底 邵阳 湘潭 湘西土家族苗族自治州 益阳 永州 岳阳 张家界 株洲"/> <province name="吉林" cities="白城 白山 长春 吉林 辽源 四平 松原 通化 延边朝鲜族自治州"/> <province name="江苏" cities="常州 淮安 连云港 南京 南通 苏州 宿迁 泰州 无锡 徐州 盐城 扬州 镇江"/> <province name="江西" cities="抚州 赣州 吉安 景德镇 九江 南昌 萍乡 上饶 新余 宜春 鹰潭"/> <province name="辽宁" cities="鞍山 本溪 朝阳 大连 丹东 抚顺 阜新 葫芦岛 锦州 辽阳 盘锦 沈阳 铁岭 营口"/> <province name="内蒙古" cities="阿拉善盟 巴彦淖尔盟 包头 赤峰 鄂尔多斯 呼和浩特 呼伦贝尔 通辽 乌海 乌兰察布盟 锡林郭勒盟 兴安盟"/> <province name="宁夏" cities="固原 石嘴山 吴忠 银川"/> <province name="青海" cities="果洛藏族自治州 海北藏族自治州 海东 海南藏族自治州 海西蒙古族藏族自治州 黄南藏族自治州 西宁 玉树藏族自治州"/> <province name="山东" cities="滨州 德州 东营 菏泽 济南 济宁 莱芜 聊城 临沂 青岛 日照 泰安 威海 潍坊 烟台 枣庄 淄博"/> <province name="山西" cities="长治 大同 晋城 晋中 临汾 吕梁 朔州 太原 忻州 阳泉 运城"/> <province name="陕西" cities="安康 宝鸡 汉中 商洛 铜川 渭南 西安 咸阳 延安 榆林"/> <province name="四川" cities="阿坝藏族羌族自治州 巴中 成都 达州 德阳 甘孜藏族自治州 广安 广元 乐山 凉山彝族自治州 眉山 绵阳 南充 内江 攀枝花 遂宁 雅安 宜宾 资阳 自贡 泸州"/> <province name="西藏" cities="阿里 昌都 拉萨 林芝 那曲 日喀则 山南"/> <province name="新疆" cities="阿克苏 阿拉尔 巴音郭楞蒙古自治州 博尔塔拉蒙古自治州 昌吉回族自治州 哈密 和田 喀什 克拉玛依 克孜勒苏柯尔克孜自治州 石河子 图木舒克 吐鲁番 乌鲁木齐 五家渠 伊犁哈萨克自治州"/> <province name="云南" cities="保山 楚雄彝族自治州 大理白族自治州 德宏傣族景颇族自治州 迪庆藏族自治州 红河哈尼族彝族自治州 昆明 丽江 临沧 怒江傈傈族自治州 曲靖 思茅 文山壮族苗族自治州 西双版纳傣族自治州 玉溪 昭通"/> <province name="浙江" cities="杭州 湖州 嘉兴 金华 丽水 宁波 绍兴 台州 温州 舟山 衢州"/>
</china>
var province = [];
var cities = [];
function init()
{
xmldom.async = true;
xmldom.onreadystatechange = statInit;
window.setTimeout(function()
{
xmldom.load("city.xml");
}
, 10);
}function statInit()
{ if (xmldom.readyState == 4)
{
if (xmldom == null || xmldom.documentElement == null)
{
alert("XML文件不存在或没有菜单项");
return ;
}
createProvince();
}
}function createProvince() {
var provinces = xmldom.getElementsByTagName("province");
delitem(document.all.province);
delitem(document.all.city);
var index = 0;
for (var i = 0; i < provinces.length; i++) {
province[i] = provinces[i].getAttribute("name");
cities[i] = provinces[i].getAttribute("cities");
document.all.province.add(new Option(province[i], province[i]));
if (province[i] == "<%= Province %>")
index = i;
}
document.all.province.selectedIndex = index;
provinceChange(index);
}
function provinceChange(index) {
var city = cities[index].split(" ");
delitem(document.all.city);
var index = 0;
for (var i = 0; i < city.length; i++) {
document.all.city.add(new Option(city[i], city[i]));
if (city[i] == "<%= City %>")
index = i;
}
document.all.city.selectedIndex = index;
}
function delitem(options)
{
optioncount = options.length;
for (i = optioncount - 1; i >= 0; i--)
{
options.options[i] = null
}
}页面
<select id="BJEnterPrize_province" name="province" onchange="provinceChange(this.selectedIndex)"></select>
<select id="BJEnterPrize_city" name="city"></select>
over
建议还是用ajax实时地去调比较好
当然,也可以放在其他地方,比如js变量中,xml文件中
但是一旦发生变动,维护起来也是一件麻烦的事
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>test</title>
<script>
var areaList={
"v100":[["选择城区"],["东城区"],["西城区"],["崇文区"],["宣武区"],["朝阳区"],["丰台区" ],["石景山区" ],["海淀区" ],["门头沟区" ],["房山区" ],["通州区" ],["顺义区" ],["延庆县" ],["昌平县" ],["怀柔县" ],["密云县" ],["平谷县" ],["大兴县" ]],
"v200":[["选择城区"],["和平区" ],["河东区" ],["河西区" ],["南开区" ],["河北区" ],["红桥区" ],["塘沽区" ],["大港区" ],["汉沽区" ],["东丽区" ],["西青区" ],["津南区" ],["北辰区" ],["蓟县","22"],["宝坻县" ],["武清县" ],["宁河县" ],["静海县" ]],
"v300":[["选择城区"],["南市区" ],["卢湾区" ],["徐汇区" ],["长宁区" ],["静安区" ],["普陀区" ],["闸北区" ],["虹口区" ],["杨浦区" ],["闵行区" ],["宝山区" ],["嘉定区" ],["浦东新区" ],["金山区" ],["松江区" ],["崇明县" ],["青浦县" ],["南汇县" ],["奉贤县" ],["黄浦区" ]]
};function province_change(v){
var city = document.getElementById("city");
city.innerHTML = "";
eval("var citys = areaList.v"+v+";");
for(var i=0;i<citys.length;i++){
city.add(new Option(citys[i],citys[i]));
}
}
</script>
</head><body onload="province_change(document.getElementById('province').value)">
<form name="dataForm" id="dataForm" action="" method="POST" target="dataFrame" style="margin: 0">
<div class="InnerDiv" style="width: 780px;">
<table align=right border=0 style="height:150; width:100%">
<tr>
<td nowrap align=right>所在省份: </td>
<td> <select name=province id=province style="width:100px" onchange="province_change(this.value)">
<option value=100>北京</option>
<option value=200>天津</option>
<option value=300>上海</option>
</select> </td>
<td nowrap align=right>所在城市: </td>
<td> <select name=city id=city></select> </td>
</tr>
</table>
</div>
</form> </body></html>
PS:ID是唯一的怎么在数据库没关联呢!
<script type="text/javascript">
var citys=[
["西安","咸阳","宝鸡","渭南","汉中"],
["深圳","广州","中山","东莞","惠州","佛山","珠海"],
["上海"]
];
function getCity()
{
var sltProvince=document.getElementById("province");
var sltCity=document.getElementById("city");
sltCity.options.length=1;
if(sltProvince.selectedIndex>0)
{
var provinceCity=citys[sltProvince.selectedIndex-1];
for(var i=0; i<provinceCity.length; i++)
{
var city=new Option(provinceCity[i],i);
sltCity.options.add(city);
}
}
}
</script>
<body>
<select name="province" id="province" onchange="getCity();" >
<option value="0">请选择省份</option>
<option value="1">陕西</option>
<option value="2">广东</option>
<option value="3">上海</option>
</select>
<select name="city" id="city">
<option value="0">请选择城市</option>
</select>
</body>
</html>
div一块区域,直接拼成一个select标签
List fuYWList=com.mcc.web.BusinesssWindow.getFuYWs();//父业务
List ziYWList=com.mcc.web.BusinesssWindow.getZiYWs();//子业务
void set_ziYW(){
com.mcc.model.Business obj_bn = new com.mcc.model.Business();
obj_bn.setBu_name(""+fuYW.selectedItem.label);
List ziYWs=null;
if(fuYW.selectedItem.value==""||fuYW.selectedItem.value==null){
ziYWs=com.mcc.web.BusinesssWindow.getZiYWs();
}
else{
ziYWs=com.mcc.web.BusinesssWindow.getBusinesss(obj_bn);
}
ziYW.getItems().clear();//bu_name清空 //添加空项
Listitem li1 = new Listitem();
li1.label = "";
li1.value = "";
li1.selected=true;
ziYW.appendChild(li1);
for(int i=0;i<ziYWs.size();i++){
Listitem li = new Listitem();
li.label = ziYWs.get(i).getBu_name();
li.value = ziYWs.get(i).getBu_id();
ziYW.appendChild(li);
}
}
实现关联:
父业务:
<listbox id="fuYW" rows="1" mold="select" onSelect="set_ziYW()">
<listitem label="" value="" selected="true"/>
<listitem forEach="${fuYWList}" value="${each.bu_id}" label="${each.bu_name}">
</listitem>
</listbox>
 子业务:
<listbox id="ziYW" rows="1" mold="select" >
<listitem label="" value="" selected="true"/>
<listitem forEach="${ziYWList}" value="${each.bu_id}" label="${each.bu_name}">
</listitem>
</listbox>
我测试过,如果用鼠标滚轮快速滚动省份,出现过程序假死的情况另外,省市数组完全可以在后台生成,如:
StringBuilder city = new StringBuilder("var arrCity = new Array();");
city.AppendFormat("arrCity.push(['{0}','{1}']);","江苏","南京");
.........
// 把省份和城市的JS输出到页面这样,维护也没有任何问题了。
<html>
<body onload="InsertProvince()">
<form>
省份:<select name="lstPro" onchange="ProChange(this);"></select>
城市:<select name="lstCity"></select>
</form>
<script type="text/javascript">
// 省份数组,省的ID+省的名称,从数据库中取出全部的省份,按下列格式组成一个javascript字符串
var arrProvince = new Array(
new Array(1,"山东"),
new Array(2,"江西"),
new Array(3,"福建")
);
// 城市数组,省的ID+城市的ID+城市的名称,从数据库中取出全部的城市,按下列格式组成一个javascript字符串
var arrCity = new Array(
new Array(1,1,"济南"),
new Array(1,2,"青岛"),
new Array(1,3,"烟台"),
new Array(2,4,"南昌"),
new Array(2,5,"吉安"),
new Array(2,6,"九江"),
new Array(2,7,"赣州"),
new Array(2,8,"宜春"),
new Array(3,9,"福州"),
new Array(3,10,"厦门"),
new Array(3,11,"三明"),
new Array(3,12,"泉州")
);
// 初始化用,填充全部的省份和第一个省份的城市用
function InsertProvince(){
var objPro = document.getElementById("lstPro");
for(var i=0;i<arrProvince.length;i++){
var opn = new Option(arrProvince[i][1],arrProvince[i][0]);
objPro.options.add(opn);
}
ProChange(objPro);
} // 省份下拉框变化时,取该省份的城市填充
function ProChange(obj){
var objCity = document.getElementById("lstCity");
while(objCity.options.length > 0)
objCity.options.remove(0);
for(var i=0;i<arrCity.length;i++)
if(arrCity[i][0] == obj.value){
var opn = new Option(arrCity[i][2],arrCity[i][1]);
objCity.options.add(opn);
}
}
</script>
</body>
</html>
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/youbl/archive/2008/08/04/2766173.aspx
<html>
<script type="text/javascript">
var citys=
[
["西安","咸阳","宝鸡","渭南","汉中"],
["深圳","广州","中山","东莞","惠州","佛山","珠海"],
["上海"],
["北京","东城区","西城区","崇文区","宣武区","朝阳区","丰台区","石景山区"," 海淀区(中关村)","门头沟区","房山区","通州区","顺义区","昌平区","大兴区","怀柔区","平谷区","密云县","延庆县"," 其他"],
["石家庄市","张家口市","承德市","秦皇岛市","唐山市","廊坊市","衡水市","沧州市","邢台市","邯郸市","保定市","其他"],
["太原市","朔州市","大同市","长治市","晋城市","忻州市","晋中市","临汾市","吕梁市","运城市","其他"],
["呼和浩特市","包头市","赤峰市","呼伦贝尔市","鄂尔多斯市","乌兰察布市","巴彦淖尔市","兴安盟","阿拉善盟","锡林郭勒盟","其他"],
["沈阳市","朝阳市","阜新市","铁岭市","抚顺市","丹东市","本溪市","辽阳市","鞍山市","大连市","营口市","盘锦市","锦州市","葫芦岛市","其他"],
["长春市","白城市","吉林市","四平市","辽源市","通化市","白山市","延边朝鲜族自治州","其他"],
["哈尔滨市","七台河市","黑河市","大庆市","齐齐哈尔市","伊春市","佳木斯市","双鸭山市","鸡西市","大兴安岭地区(加格达奇)","牡丹江","鹤岗市","绥化市 ","其他"],
["黄浦区","卢湾区","徐汇区","长宁区","静安区","普陀区","闸北区","虹口区","杨浦区","闵行区","宝山区","嘉定区","浦东新区","金山区","松江区","青浦区","南汇区","奉贤区","崇明县","其他"],
["南京市","徐州市","连云港市","宿迁市","淮安市","盐城市","扬州市","泰州市","南通市","镇江市","常州市","无锡市","苏州市","其他"],
["杭州市","湖州市","嘉兴市","舟山市","宁波市","绍兴市","衢州市","金华市","台州市","温州市","丽水市","其他"],
["合肥市","宿州市","淮北市","亳州市","阜阳市","蚌埠市","淮南市","滁州市","马鞍山市","芜湖市","铜陵市","安庆市","黄山市","六安市","巢湖市","池州市","宣城市","其他"],
["福州市","南平市","莆田市","三明市","泉州市","厦门市","漳州市","龙岩市","宁德市","其他"],
["南昌市","九江市","景德镇市","鹰潭市","新余市","萍乡市","赣州市","上饶市","抚州市","宜春市","吉安市","其他"],
["济南市","聊城市","德州市","东营市","淄博市","潍坊市","烟台市","威海市","青岛市","日照市","临沂市","枣庄市","济宁市","泰安市","莱芜市","滨州市","菏泽市","其他"],
["郑州市","三门峡市","洛阳市","焦作市","新乡市","鹤壁市","安阳市","濮阳市","开封市","商丘市","许昌市","漯河市","平顶山市","南阳市","信阳市","周口市","驻马店市","其他"],
["武汉市","十堰市","襄樊市","荆门市","孝感市","黄冈市","鄂州市","黄石市","咸宁市","荆州市","宜昌市","随州市","恩施土家族苗族自治州","仙桃市","天门市","潜江市","神农架林区","其他"],
["长沙市","张家界市","常德市","益阳市","岳阳市","株洲市","湘潭市","衡阳市","郴州市","永州市","邵阳市","怀化市","娄底市","湘西土家族苗族自治州","其他"],
["广州市","清远市市","韶关市","河源市","梅州市","潮州市","汕头市","揭阳市","汕尾市"," 惠州市","东莞市","深圳市","珠海市","中山市","江门市","佛山市","肇庆市","云浮市","阳江市","茂名市","湛江市"," 其他"],
["南宁市","桂林市","柳州市","梧州市","贵港市","玉林市","钦州市","北海市","防城港市","崇左市","百色市","河池市","来宾市","贺州市","其他"],
["海口市","三亚市","其他"],
["渝中区","大渡口区","江北区","沙坪坝区","九龙坡区","南岸区","北碚区","万盛区","双桥区","渝北区","巴南区","万州区","涪陵区","黔江区","长寿区","合川市","永川市","江津市","南川市","綦江县","潼南县","铜梁县","大足县","璧山县","垫江县","武隆县","丰都县","城口县","开县","巫溪县","巫山县","奉节县","云阳县","忠县","石柱土家族自治县","彭水苗族土家族自治县","酉阳土家族苗族自治县","秀山土家族苗族自治县","其他"],
["成都市","广元市","绵阳市","德阳市","南充市","广安市","遂宁市","内江市","乐山市","自贡市","泸州市","宜宾市","攀枝花市","巴中市","资阳市","眉山市","雅安","阿坝藏族羌族自治州","甘孜藏族自治州","凉山彝族自治州县","其他"],
["贵阳市","六盘水市","遵义市","安顺市","毕节地区","铜仁地区","黔东南苗族侗族自治州","黔南布依族苗族自治州","黔西南布依族苗族自治州","其他"],
["昆明市","曲靖市","玉溪市","保山市","昭通市","丽江市","普洱市","临沧市","宁德市","德宏傣族景颇族自治州","怒江傈僳族自治州","楚雄彝族自治州","红河哈尼族彝族自治州","文山壮族苗族自治州","大理白族自治州","迪庆藏族自治州","西双版纳傣族自治州","其他"],
["拉萨市","那曲地区","昌都地区","林芝地区","山南地区","日喀则地区","阿里地区","其他"],
["西安市","延安市","铜川市","渭南市","咸阳市","宝鸡市","汉中市","安康市","商洛市","其他"],
["兰州市 ","嘉峪关市","金昌市","白银市","天水市","武威市","酒泉市","张掖市","庆阳市","平凉市","定西市","陇南市","临夏回族自治州","甘南藏族自治州","其他"],
["西宁市","海东地区","海北藏族自治州","黄南藏族自治州","玉树藏族自治州","海南藏族自治州","果洛藏族自治州","海西蒙古族藏族自治州","其他"],
["银川市","石嘴山市","吴忠市","固原市","中卫市","其他"],
["乌鲁木齐市","克拉玛依市","喀什地区","阿克苏地区","和田地区","吐鲁番地区","哈密地区","塔城地区","阿勒泰地区","克孜勒苏柯尔克孜自治州","博尔塔拉蒙古自治州","昌吉回族自治州伊犁哈萨克自治州","巴音郭楞蒙古自治州","河子市","阿拉尔市","五家渠市","图木舒克市","其他"],
["香港","其他"],
["澳门","其他"],
["台湾","其他"]
];var provinces=
[
["陕西省"],
["广东省"],
["上海市"],
["北京市"],
["天津市"],
["河北省"],
["山西省"],
["内蒙古"],
["辽宁省"],
["吉林省"],
["黑龙江省"],
[" 江苏省"],
["浙江省"],
["安徽省"],
["福建省"],
["江西省"],
["山东省"],
["河南省"],
["湖北省"],
["湖南省"],
["广西自治区"],
["海南省"],
["重庆市"],
["四川省"],
["贵州省"],
["云南省"],
["西藏自治区"],
["甘肃省"],
["青海省"],
["宁夏回族自治区"],
["新疆维吾尔自治区"],
["香港特别行政区"],
["澳门特别行政区"],
["台湾省"],
["其它"]
];
function getCity()
{
var sltProvince=document.getElementById("province");
var sltCity=document.getElementById("city");
sltCity.options.length=1;
if(sltProvince.selectedIndex>0)
{
var provinceCity=citys[sltProvince.selectedIndex-1];
for(var i=0; i<provinceCity.length; i++)
{
var city=new Option(provinceCity[i],i);
sltCity.options.add(city);
}
}
}
function getpProvince()
{
var sltProvince=document.getElementById("province");
for(var i=0; i<provinces.length; i++)
{
var Province=new Option(provinces[i],i);
sltProvince.options.add(Province);
}
}
function sss()
{
alert(document.getElementById("province").options[document.getElementById("province").selectedIndex].text+document.getElementById("city").options[document.getElementById("city").selectedIndex].text);
}
</script>
<body onload="getpProvince();">
<select name="province" id="province" onchange="getCity();" >
<option value="0">请选择省份</option>
</select>
<select name="city" id="city" onchange="sss();">
<option value="0">请选择城市</option>
</select>
</body>
</html>
<%@ Import namespace="System.Data" %>
<%@ Import namespace="System.Data.OleDb" %>
<%
Response.Write("<script language=javascript>");
Response.Write("var aryDq = new Array(");
DAL.OleDBO db = new DAL.OleDBO();
string strSql = "select * from Ctinfo where pramentid<>0";
DataSet ds = new DataSet();
ds = db.GetDataSet(strSql);
int itbRowCount = ds.Tables[0].Rows.Count;
foreach(DataRow row in ds.Tables[0].Rows)
{
Response.Write("new Array('" + row[0].ToString() + "','" + row[1].ToString() + "','" + row[2].ToString() + "'),");
}
Response.Write("new Array('0','0','0')");
ds.Dispose();
ds = null;
Response.Write(");");
Response.Write("</script>");
%>
<script language="javascript" type="text/javascript">
function Sfonchange(sfId)
{
if (sfId!="")
{
var Dqstr="";j=0,p=0;
for (i=0;i<aryDq.length;i++)
{
if (aryDq[i][2]==sfId)
{
j=j+1;
Dqstr=Dqstr+aryDq[i][0]+","+aryDq[i][1]+",";
}
}
document.getElementById("dropDq").length=j+1;
aryDq1=Dqstr.split(",");
document.getElementById("dropDq").options[0].value = "0";
document.getElementById("dropDq").options[0].text = "请选择所在城市";
for (i=1;i<=j;i++)
{
if(aryDq1[p] != null && aryDq1[p] != "")
{
document.getElementById("dropDq").options[i].value = aryDq1[p];
document.getElementById("dropDq").options[i].text = aryDq1[p+1];
}
p=p+2;
}
}
}
</script>前端调用<%@ Register Src="UserContral/DropControl.ascx" TagName="DropControl" TagPrefix="uc1" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>无标题页</title>
<script type="text/javascript">
function a()
{
document.getElementById("ss").innerText=document.getElementById("dropDq").options[document.getElementById("dropDq").selectedIndex].text;
return false;
}
</script>
</head>
<body>
<form id="form1" runat="server" method="post">
<div>
<uc1:DropControl ID="DropControl1" runat="server" />
<asp:DropDownList ID="DropDownList1" runat="server">
</asp:DropDownList>
<asp:DropDownList ID="dropDq" runat="server">
<asp:ListItem Value="0">请选择所在城市</asp:ListItem>
</asp:DropDownList>
<asp:HiddenField ID="ss" runat="server" />
<br />
<br />
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" OnClientClick="a();" /></div>
</form>
</body>
</html>
我当时做这题时(学校的试题,自己有改进),使用二维数组,那么以后如果维护的话,直接添加新的组数元素就可以了!
具体的,以后整理一下,放上来!--不过楼主,这东西确实应该是算法成熟了,自己可以先搜一下!而且怎么感觉你也是在做作业?
在javascript里定义的事件函数是:onSelectChange;---使用Dreamwear CS4 自动弹出来!
--方法要传递省份名称!!!
import java.util.List;import com.alldao.bims.global.web.BaseAction;
import com.alldao.bims.modules.manage.country.domain.City;
import com.alldao.bims.modules.manage.country.domain.Province;
import com.alldao.bims.modules.manage.country.domain.Xian;
/**
* Ajax调用!级联菜单操作!
* @author wdw
*
*/
public class CountryAction extends BaseAction { /**
*
*/
private static final long serialVersionUID = -6513709007483326727L; private int globalId; public int getGlobalId() {
return globalId;
}
public void setGlobalId(int globalId) {
this.globalId = globalId;
} public void getProvince() throws Exception {
List<Province> provinceList=super.getService().getCountryService().getAllProvinceByCountryId(globalId);
String str="";
for(int i=0;i<provinceList.size();i++){
String pname=provinceList.get(i).getSprovinceCnName();
int pid = provinceList.get(i).getIProvinceID();
if(i==0){
str+=pid;
str+=",";
str+=pname;
}else{
str+="*";
str+=pid;
str+=",";
str+=pname;
}
}
getResponse().setContentType("text/xml; charset=utf-8");
PrintWriter writer =getResponse().getWriter();
writer.print(str); }
public void getCity() throws Exception {
List<City> cityList=super.getService().getCountryService().getAllCityByProvinceId(globalId);
String str="";
for(int i=0;i<cityList.size();i++){
String pname=cityList.get(i).getSCityCnName();
int pid = cityList.get(i).getICityID();
if(i==0){
str+=pid;
str+=",";
str+=pname;
}else{
str+="*";
str+=pid;
str+=",";
str+=pname;
}
}
getResponse().setContentType("text/xml; charset=utf-8");
PrintWriter writer =getResponse().getWriter();
writer.print(str); }
public void getXian() throws Exception {
List<Xian> xianList=super.getService().getCountryService().getAllXianByCityId(globalId);
String str="";
for(int i=0;i<xianList.size();i++){
String pname=xianList.get(i).getSXianCnName();
int pid = xianList.get(i).getIXianId();
if(i==0){
str+=pid;
str+=",";
str+=pname;
}else{
str+="*";
str+=pid;
str+=",";
str+=pname;
}
}
getResponse().setContentType("text/xml; charset=utf-8");
PrintWriter writer =getResponse().getWriter();
writer.print(str); }}
method:"get",
parameters:{globalId:e,d:new Date().getTime()},
onComplete:
function(o)
{
var result=o.responseText;
var provinces=result.split("*");
var province=document.getElementById(t3);
province.options.length=0;
var opt=document.createElement("option");
opt.value="";
opt.innerHTML="--请选择--";
province.appendChild(opt);
for(var i=0;i<provinces.length;i++)
{
var arry=provinces[i].split(",");
var pid=arry[0];
var name=arry[1]; var op=document.createElement("option");
op.value=pid;
op.innerHTML=name;
province.appendChild(op);
}
}
});
每次点击的时候,触发事件,我用的是DropListBox控件。动态增加删除它的item,绑定值到item的value和text上。
非常方便,就几行。你这样搞,不麻烦啊?
不要放数据库,不要从数据库取值