我做了一个二级联动的下拉列表框,用于查询,我想查询之后下拉列表框默认选中我在查询之前选择的值。
比如我现在选择的主菜单是“行业”,子菜单选择的是“研发中心”那么我查询之后也应该显示相同的默认值,但是只有第一个下拉列表框实现了我想要的效果,第二个一直都不行。
这是我设置默认值得代码
  if(mu!="0"){
   document.getElementById("subm").value=mu;
       Selectsubmenu();
  }
  if(subses!="0"){
  //alert(subses);
    document.getElementById("cd").value=subses;
  }
同事我还发现一个问题,当我把alert的注释去掉之后再火狐中能达到我要的效果,注释之后又不行了。同事ie下面是完全没有反应。
 <td style="height: 45px; font-size: 12px;">
                主菜单:<select id="subm" onchange="Selectsubmenu()"><%=se%></select>
            </td>
            <td style="height: 45px; font-size: 12px;">
                所属子菜单:<select id="cd"><option value="0">子菜单</option>
                </select>
            </td>/*二级联动,根据主菜单id查询子菜单信息*/
function Selectsubmenu() {
    var s = document.getElementById("subm").value;
    var url = "../ashx/Selectsubmenu.ashx";
    var date = { "id": s };
    $.post(url, date, function (date) {
        var jsion = eval(date);
        var selet = document.getElementById("cd");
        //<option value="0">子菜单</option>
        for (var i = 0; i < jsion.length; i++) {
            var option = new Option(jsion[i].Submenu, jsion[i].id); /*创建option*/
            selet.options.add(option);   /*添加值*/
        }
    });
}JavaScript

解决方案 »

  1.   

    在body中加一个onload并把这个方法Selectsubmenu()加在这里
      

  2.   

    应为ajax异步的,还没有返回设置子项时都已经执行过
      if(subses!="0"){
      //alert(subses);
        document.getElementById("cd").value=subses;
      }
    这些代码了,这些代码放到ajax成功执行的回调函数中/*二级联动,根据主菜单id查询子菜单信息*/
    function Selectsubmenu() {
        var s = document.getElementById("subm").value;
        var url = "../ashx/Selectsubmenu.ashx";
        var date = { "id": s };
        $.post(url, date, function (date) {
            var jsion = eval(date);
            var selet = document.getElementById("cd");
            //<option value="0">子菜单</option>
            for (var i = 0; i < jsion.length; i++) {
                var option = new Option(jsion[i].Submenu, jsion[i].id); /*创建option*/
                selet.options.add(option);   /*添加值*/
            } if(subses!="0"){
      //alert(subses);
        //document.getElementById("cd").value=subses;
    $('#cd option[value="'+subses+'"]).attr('selected',true);
      }
        });

    IE下设置select的value不会选中对应的option,要设置selectedIndex或者option的selected属性,看修改后的代码,上面红色的
      

  3.   

      var subses=<%=su%>;
      var mu=<%=me%>;
      var tx=<%=tx%>;
      if(mu!="0"){
       document.getElementById("subm").value=mu;
         Selectsubmenu();
      }
      if(subses!="0"){
      //alert(subses);
        //document.getElementById("cd").value=subses;
        $('#cd option[value="'+subses+'"]').attr('selected',true);
      }我这样写的还是不行啊。
      

  4.   

    我晕,你有看我发的代码了没有了,设置选中的代码放到ajax回调里面
      

  5.   

    看了的,问题是我执行查询的时候是这样写的      function seless() {
              var menu = document.getElementById("subm").value;
              var submenu = document.getElementById("cd").value;
              var text = document.getElementById("text").value;
              var re = /^[\u4e00-\u9fa5a-z]+$/gi; //只能输入汉字和英文字母
              if (text != "") {
                  if (!re.test(text)) {
                      alert("只能输入汉字和字母");
                      return false;
                  }
              } else { 
               text="0"
              }
          var url = "?menu=" + menu + "&submenu=" + submenu + "&text=" + text + "";
          location.href = encodeURI(url);
          }
      

  6.   

    和你怎么执行查询没关系,你的2级select是通过ajax加载的,所以要在回调中设置,要不ajax就改成同步的