<td align="left" colspan="4">  
                     <select id="BJUserInfo_province" name="province" value="<%=Province %>" onchange="provinceChange(this.selectedIndex)"></select>
<select id="BJUserInfo_city" name="city" value="<%=City %>"></select>
                                                选项中没有的城市,选省即可。</td>
--这个是我写的没有效果

解决方案 »

  1.   

    <%=Province %> 是不是要作为option 的集合放到<select></select>之间啊?
      

  2.   

    添加runat="server",在后台添项或传值通过JS实现数据添加
    var A=   new  Array();   
    var s  =  document.getElementById( "" );   
        for  (var i = 0 ;i < A.length;i ++ )   
         {   
        var option  =  document.createElement( " option " );   
        var text  =  document.createTextNode(city[i]);   
        option.appendChild(text);   
        option.value = i;   
        s.appendChild(option);   
          
       }    
      

  3.   

    为什么只有select没有option?光给select赋value有什么用?
      

  4.   

    <select id="BJUserInfo_city" name="city" value="<%=City %>"></select>
    select有这样红色部分的写法吗??
      

  5.   

    没有option
    我这个 select是JS省市二级联动的
      

  6.   

    我试了的
     runat="server"
    那么 select就加载不出
    省市信息了
      

  7.   

    那你没有option哪来的下拉选项?即使是省市联动,省那下面也应该有选项不?不然你怎么联动?
      

  8.   

    这个就是我的省市代码
        <select id="BJUserInfo_province" name="province"  onchange="provinceChange(this.selectedIndex)"></select>
    <select id="BJUserInfo_city" name="city"></select>JS:
    <script language="JavaScript">
    <!--
    var xmldom = new ActiveXObject("Microsoft.XMLDOM");
    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);
        for (var i = 0; i < provinces.length; i++)
        {
            province[i] = provinces[i].getAttribute("name");
            cities[i] = provinces[i].getAttribute("cities");
            document.all.province.add(window.Option(province[i], province[i]));
        }
        provinceChange(0);
    }function provinceChange(index)
    {
        var city = cities[index].split(" ");
        delitem(document.all.city);
        for (var i = 0; i < city.length; i++)
        {
            document.all.city.add(window.Option(city[i], city[i]));
        }
    }function delitem(options)
    {
        optioncount = options.length;
        for (i = optioncount - 1; i >= 0; i--)
        {
            options.options[i] = null
        }
    }
    //-->
    </script>读取的信息在 xml里面
      

  9.   

    <?xml version="1.0" encoding="utf-8" ?>
    <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>
      

  10.   

    把你的js中的window.Option改为new Option
    有两个地方,一个事createProvince里面的
    另一个是provinceChange里面的
      

  11.   

    还有就是在body的onload中添加init():
    <body onload="init()">
      

  12.   

    已经添加了
    没有效果
     select控件这个地方不需要添加什么吗
      

  13.   

    这是我测试通过的:<!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 language="JavaScript">
            var xmldom = new ActiveXObject("Microsoft.XMLDOM");
            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);
                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]));
                }
                provinceChange(0);
            }
            function provinceChange(index) {
                var city = cities[index].split(" ");
                delitem(document.all.city);
                for (var i = 0; i < city.length; i++) {
                    document.all.city.add(new Option(city[i], city[i]));
                }
            }
            function delitem(options) {
                optioncount = options.length;
                for (i = optioncount - 1; i >= 0; i--) {
                    options.options[i] = null
                }
            } 
        </script></head>
    <body onload="init()">
        <form id="form1" runat="server">
        <div>
            <select id="BJUserInfo_province" name="province" onchange="provinceChange(this.selectedIndex)">
            </select>
            <select id="BJUserInfo_city" name="city">
            </select>
        </div>
        </form>
    </body>
    </html>
      

  14.   

    还是有问题
    你这个没有选择的时候
    出现的北京
    当我选择湖北--武汉的时候
    保存
    此时显示的还是北京
    虽然插入到了数据库
    但是没有把值绑定到 select控件
      

  15.   

    所以说还是我17楼的
    所说的
    还需要在select添加什么
      

  16.   

    这段JS是不是必须保证客户端必须拥有city.xml?
      

  17.   

    保存的时候后台取值你要用Request.Form来取值
    如省就用Request.Form["province"]
    市就用Request.Form["city"]
      

  18.   

      UserInfo.province = Request.Form["province"].ToString();
                    UserInfo.City = Request.Form["city"].ToString();
    我取出来啦
    现在是怎么把UserInfo.province值赋给select控件
      

  19.   

    在后台定义两个变量:        protected string province = "广西";
            protected string city = "梧州";
            //这里我定死了,你取从数据库得到的值即可
    然后把你的js修改一下:        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;
            }
      

  20.   


    不晚吧...
    二级联动没这么夸张吧..
    实在没办法用AJAX输出一段HTML,对select  outhtml
    也可以用回调来做,这样更具多浏览器兼容了.这样的网上例子应该不少的,
    var xmldom = new ActiveXObject("Microsoft.XMLDOM");
            var province = [];
            var cities = [];
            function init() {
                xmldom.async = true;
                xmldom.onreadystatechange = statInit;
                window.setTimeout(function() { xmldom.load("city.xml"); }, 10);//这段代码是否有些问题?是否必须保证客户端拥有City.xml?而且还来个settimeout...这方法感觉不友好.
            }
      

  21.   

    另外,建议你最好把document.all改为document.getElementById
    因为有些浏览器是不支持document.all的
      

  22.   

    http://zhidao.baidu.com/question/88051282.html?fr=qrl
    http://www.abcdown.net/InfoView/Article_291738_2.html
      

  23.   

    谢谢2位
    三尾有更好的吗?
    帮我推荐一个
    你说的使用ajaxpro吗
      

  24.   

    ajaxpro就更容易了.我帮你看看有没有通过回调做二级联动的例子..
      

  25.   

    现在做ajax,我基本都用jquery来实现了
      

  26.   

    无限联:http://www.hbjjrb.com/Jishu/ASPNET/200704/5743.html
      

  27.   

    oj
    是否能帮忙写一个
     jquery 的例子
    我学习下
      

  28.   

    还是希望oj
    帮忙写个
    jquery的例子
      

  29.   

    写的不是很好,仅供参考:<!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" src="js/jquery.js"></script>    <script language="JavaScript">
            var province = [];
            var cities = [];
            $(document).ready(function() {
                var ddlProv = $("#BJUserInfo_province")[0];
                $.ajax({
                    url: "city.xml",
                    dataType: "xml",
                    success: function(xml) {
                        $(xml).find("province").each(function() {
                            var prov = $(this).attr("name");
                            var opt = document.createElement("option");
                            opt.setAttribute("value", prov);
                            opt.innerHTML = prov;
                            ddlProv.appendChild(opt);
                        });
                        provinceChange(0);
                    }
                });
            });
        function provinceChange(index) {
            var ddlProv = $("#BJUserInfo_province")[0];
            var province = ddlProv.options[index].value;
            $.ajax({
                url: "city.xml",
                dataType: "xml",
                success: function(xml) {
                    $(xml).find("province").each(function() {
                        if ($(this).attr("name") == province) {
                            var ddlCity = $("#BJUserInfo_city")[0];
                            ddlCity.options.length = 0;
                            var cities = $(this).attr("cities").split(' ');
                            for (var i = 0; i < cities.length; i++) {
                                var opt = document.createElement("option");
                                opt.setAttribute("value", cities[i]);
                                opt.innerHTML = cities[i];
                                ddlCity.appendChild(opt);
                            }
                        }
                    });
                }
            });
        }
        </script></head>
    <body>
        <form id="form1" runat="server">
        <div>
            <select id="BJUserInfo_province" name="province" onchange="provinceChange(this.selectedIndex)">
            </select>
            <select id="BJUserInfo_city" name="city">
            </select>
        </div>
        </form>
    </body>
    </html>
      

  30.   

    js部分修改一下:
            var cities = [];
            $(document).ready(function() {
                var ddlProv = $("#BJUserInfo_province")[0];
                $.ajax({
                    url: "city.xml",
                    dataType: "xml",
                    success: function(xml) {
                        $(xml).find("province").each(function() {
                            var prov = $(this).attr("name");
                            var cs = $(this).attr("cities").split(' ');
                            var opt = document.createElement("option");
                            opt.setAttribute("value", prov);
                            opt.innerHTML = prov;
                            ddlProv.appendChild(opt);
                            var arr = [];
                            for (var i = 0; i < cs.length; i++) {
                                arr.push(cs[i]);
                            }
                            cities.push(arr);
                        });
                        provinceChange(0);
                    }
                });
            });
        function provinceChange(index) {
            var ddlCity = $("#BJUserInfo_city")[0];
            ddlCity.options.length = 0;
            for (var i = 0; i < cities[index].length; i++) {
                var opt = document.createElement("option");
                opt.setAttribute("value", cities[index][i]);
                opt.innerHTML = cities[index][i];
                ddlCity.appendChild(opt);
            }
        }