<script>fill('area_province', '', area_provincearr, '');fill('area_city', 'area_province', area_cityarr, '');</script>省份:<select name="area_province" id="area_province" onchange="fill('area_city', 'area_province', area_cityarr);"></select>城市:<select name="area_city" id="area_city"></select>
function fill(setid, parentid, arr, value) {
    setid = document.getElementById(setid);
    if(setid != null) {
                   //让下拉框一开始显示"请选择",左边是显示,右边是value
        setid.options[0]=new Option('请选择','请选择');
        opt = 0;
                   //等于"",就往下拉列表填充下面的省份
        if(parentid == '') {
            for(i=0;i<arr.length;i++) {
                setid.options[i+1]=new Option(arr[i][1],arr[i][0]);
                if(arr[i][1] == value) {
                    opt = i+1;
                }
            }
            setid.options[opt].selected=true;
            setid.length=i+1;                  //不等于"",就往城市下拉列表填充城市
        } else {
            parentcode = document.getElementById(parentid).value;
            count=1;
            if(parentcode != '') {
                for(i=0;i<arr.length;i++) {
                                              //截取城市的编号
                    if(arr[i][0].toString().substring(0,parentcode.length)==parentcode.substring(0, parentcode.length)) {
                             //如果省的编号和截取的城市编号等,就说明该城市是选中的省,放到城市下拉列表中
            setid.options[count]=new Option(arr[i][1],arr[i][1]);
                if(value != null && arr[i][1] == value) {
                       opt = count;
                }
                    count=count+1;
                       }
                }
            }
            setid.options[opt].selected=true;
            setid.length=count;
        }
    }
}//省列表
var area_provincearr = new Array(
new Array('1700', '广西'),
new Array('1100', '安徽'),
new Array('1200', '北京'),
new Array('1300', '重庆'),
new Array('1400', '福建')
);//城市列表
var area_cityarr = new Array(
new Array('11000002', '合肥'),
new Array('11000003', '安庆'),
new Array('11000006', '巢湖'),
new Array('12000037', '怀柔'),
new Array('12000038', '密云'),
new Array('12000039', '延庆'),
new Array('13000041', '万州'),
new Array('14000093', '永安'),
new Array('14000094', '武夷山'),
new Array('14000095', '厦门'),
new Array('14000096', '漳州'),
new Array('15000098', '兰州'),
new Array('17000141', '南宁'),
new Array('17000149', '来宾'),
new Array('17000150', '钦州'),
new Array('17000151', '梧州'),
new Array('17000152', '贵港'),
new Array('17000153', '玉林')
);
以上代码是“添加用户界面”的级联代码,就是选中省后,城市下拉列表的值会是该省的城市,现在的我的项目是ssh,struts1.2的, 
想实现,当修改用户信息的时候,如何实现根据用户所在城市,进入修改页面的时候城市下拉就是用户所在城市呢? 

解决方案 »

  1.   

    一般都是用ajax实现的。。
    你写的好像也能实现。。fill('area_province', '', area_provincearr, '<%=省名称%>');
    fill('area_city', 'area_province', area_cityarr, '<%=城市名称%>');
      

  2.   

    可以通过js来实现啊,省份的值和下拉里表里的值比较,相等的话就让下拉列表的selectedIndex的值等于相应的省份在下拉列表中的位置。
      

  3.   

    “以上代码是“添加用户界面”的级联代码,就是选中省后,城市下拉列表的值会是该省的城市”
    这个已经实现了,其实把那些代码放在后台,用DWR挺好“现在的我的项目是ssh,struts1.2的, 想实现,当修改用户信息的时候,如何实现根据用户所在城市,进入修改页面的时候城市下拉就是用户所在城市呢? ”你在当前页面选择好了省,会弹出城市,然后选择城市,在进行提交
    那么你的这些数据一定是到了后台放在了ActionForm中了,
    那么你在转到修改页面的时候,就能在请求范围内得到这个城市的值呀
    你用的是struts1.2,那么你在页面上就有标签呀
    <html:select>标签,通过value来指定默认值就可以了呀
      

  4.   

    JS
    DWR网上很多这方面例子