这个select级联菜单是通过解析xml完成的 <script type="text/javascript">
$(document).ready(function(){
     $.ajax({
      url : "${request.contextPath}/xml/address.xml",
      success : function(xml) {
       $(xml).find("province").each(function(){
        var t = $(this).attr("name");  
         $("#DropProvince").append(
          "<option>" + t + "</option>");
        });
       
      }
     });
    
    //二级的菜单
    $("#DropProvince").change(
     function() {
        $("#sCity>option").remove();
        var pname = $("#DropProvince").val();
        $.ajax({
         url : "${request.contextPath}/xml/address.xml",
         success : function(xml){
          $(xml).find("province[name='" + pname+ "']>city").each(function(){
            var c = $(this).attr("name")
            $("#sCity").append("<option>"+ c + "</option>");
          });
         }
        });  
}
    );
    //三级的菜单  
    $("#sCity").change(
     function() {
     $("#sAddress>option").remove();
     var pname1 = $("#sCity").val();
        $.ajax({
         url : "${request.contextPath}/xml/address.xml",
         success : function(xml) {
          $(xml).find("city[name='" + pname1+ "']>address").each(function(){
          var d = $(this).attr("name")
             $("#sAddress").append("<option>"+ d + "</option>");
            });
         }
        });
}
    );
  });
</script><tr>
<td align="center">省:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<select  id="DropProvince" name="province"><option>请选择</option></select></td>
</tr>
<tr>
<td align="center">市:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<select id="sCity" name="city"><option>请选择</option></select></td>
</tr>
<tr>
<td align="center">区/县:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<select id="sAddress" name="address"><option>请选择</option></select></td>
</tr>
我要修改数据的时候,要把修改前的数据带出来。 比如现在在数据库中查出 省是黑龙江 市是哈尔滨 区是南岗区
怎样让select自己默认选择省市区。谢谢 

解决方案 »

  1.   

    首先以上的3个ajax 异步是返回下拉列表的 下拉值 
    首先当文档载入后台的时候你要 请求一次后台 
     返回格式为{“省”:“1” ,“市”:2 ,“区”:3}
    之后用juqery.parseJSON(obj) 转换为json 对象
    之后取得 省市的值 区的值
    之后取得 select的对象 用$("select").val(obj.省);
    之后类同 希望对你有帮助!
      

  2.   


    不好意思 没懂
    我这个在后台查完后 传过来一个对象address 里面有province,city,address,这三个值是我要在select中显示的,请问怎么弄
    由于不是自己写的 是改别人的 字段有重复 请见谅
      

  3.   

    不好意思,没懂
    我在后台查出一个对象address 里面有 province,city,address(县),要怎么判断,希望详细点
    由于是改别人的代码,里面字段混乱,见谅,等回复
      

  4.   

    province,city,address(县) 比如说 你选择了黑龙江 哈尔滨 
     那数据库里面至少也应该存在 省份的字段是 1 市的字段是2 -- 这代表是你选中的记录
    所以文档加载的时候你要把你选中的数据 读出来  这后让这个select 默认选中你数据库中的值。。
      

  5.   

    select 默认选中问题的解决,分享一下解决办法,http://www.betterhelper.net/bencandy.php?fid=86&id=3501,,自己真实检验过代码的,可以用的
      

  6.   

    select 默认选中问题的解决,分享一下解决办法,http://www.betterhelper.net/bencandy.php?fid=86&id=3501,,自己真实检验过代码的,可以用的
      

  7.   

       var pro='黑龙江',city='哈尔滨',area='南岗区'//将读出的值赋值给这3个变量,添加option的时候对比下相同添加selected属性
       $(document).ready(function(){
            $.ajax({
                 url : "${request.contextPath}/xml/address.xml",
                 success : function(xml) {
                  $(xml).find("province").each(function(){
                       var t = $(this).attr("name");  
                    $("#DropProvince").append(
                     "<option"+(t==pro?' selected':'')+">" + t + "</option>");///////////
                       });
                       
                 }
            });
        
               //二级的菜单
               $("#DropProvince").change(
                function() {
                       $("#sCity>option").remove();
                       var pname = $("#DropProvince").val();
                       $.ajax({
                        url : "${request.contextPath}/xml/address.xml",
                        success : function(xml){
                             $(xml).find("province[name='" + pname+ "']>city").each(function(){
                                   var c = $(this).attr("name")
                                   $("#sCity").append("<option"+(c==city?' selected':'')+">"+ c + "</option>");/////////
                             });
                        }
                       });  
                }    
            );
            //三级的菜单  
            $("#sCity").change(
                function() {
                    $("#sAddress>option").remove();
                    var pname1 = $("#sCity").val();
                       $.ajax({
                        url : "${request.contextPath}/xml/address.xml",
                        success : function(xml) {
                             $(xml).find("city[name='" + pname1+ "']>address").each(function(){
                                 var d = $(this).attr("name")
                                $("#sAddress").append("<option"+(d==area?' selected':'')+">"+ d + "</option>");///////////
                               });
                        }
                       });
                }
            );
         });
      

  8.   

    省是黑龙江 市是哈尔滨 区是南岗区
    这三个数据你是有的了。省市两级的onchange你也是写了的方法就很简单了
    1:将以上三个数据做个定义,比如:var defProvince='黑龙江',defCity='哈尔滨',defArea='南岗区
    '
    2:保证正确的定义了省市两级的onchange事件的内容主体
    3:初始化省级数据,先初始化填充数据之后,如果defProvince值不为空,直接使用$('id').val(defProvince)选中其对应的,被选中后,onchange事件将被触发。异步获取对应的市级数据以后,如果defCity值不为空,也选中其对应的。如果有被选中的,那么市级的onchange事件也将被触发。就获取地区的数据了,再判断defArea是否为空,不为空也选中它
    4:每当选中了一个初始化的值以后,就清空那个初始化的值。比如初始化选中了defProvince以后,设置defProvince=''因为select中使用$(id).val(defValue)时,如果在对应的select中没有相应的值时,选项是不会发生任何变化的。也就是说,onchange事件不会被触发