本人用做一个二级联动下拉菜单,通过select上级地区,显示下级地区,可以当我多次下拉上级地区(select1)时,下级地区(select2)就请求不到了,就没的反应了,select2里面还保存的是上一次下拉的值我的jsp页面是这样写的:
    <script type="text/javascript" src="<%=path%>/js/jquery-1.6.2.min.js"></script>
    <script type="text/javascript">
      $(document).ready(function (){
          $("#regionFatherid").change(function (){
             var id=$("#regionFatherid").val();
          //alert("chage");
          if(id!=0){
             $.post("<%=path%>/getRegionChildByRegionFather",{regionFatherId:id,'fresh':Math.random()},function (d){
                //alert("d="+d);
                //alert("if");
                $("#regionChild").empty().append(d);
             });
          }else{
            //alert("else");
            $("#regionChild").empty().append("");
          }
          });
      });
    </script>                           <td align="right">上级地区:</td>
                       <td colspan="3">
                     <s:select name="users.regionByRegId.regId" id="regionFatherid"  onchange="findRegionChild()" list="regionList" headerKey="0" headerValue="请选择" listKey="regId" listValue="regName" theme="simple"></s:select>
                      </td>
                    </tr>
                    <tr>
                      <td align="right">下级地区:</td>
                      <td colspan="3">
                       
                       <select id="regionChild" name="users.regionByRegFatherId.regId">
                         <option value=""></option>
                       </select>action里面是这样写的:
public String getChildByFather() throws Exception{
List<ParameterBean> list=new ArrayList<ParameterBean>(0);
list=usersService.getRegionChildByRegionFatherId(regionFatherId);
if (list.size()>0) {
StringBuilder builder=new StringBuilder();
for (Iterator iterator = list.iterator(); iterator.hasNext();) {
    ParameterBean bean = (ParameterBean) iterator.next();
    builder.append("<option value='"+bean.getRegId()+"'>"+bean.getRegName()+"</option>");
}
HttpServletResponse response=ServletActionContext.getResponse();
response.setCharacterEncoding("UTF-8");
    PrintWriter out=response.getWriter();
    out.write(builder.toString());
    out.flush();
    out.close();
}
return null;
}

解决方案 »

  1.   

    绑定了事件$("#regionFatherid").change(function (){
    怎么还调用?
    onchange="findRegionChild()"
    不太清楚这里是不是请求两次$("#regionChild").empty().append(d);
    这里可以这样写?不应该是 $("#regionChild").empty();$("#regionChild").append(d);吗?
      

  2.   

    if(id!=0){
    $.post("<%=path%>/getRegionChildByRegionFather",{regionFatherId:id,'fresh':Math.random()},function (d){
    //alert("d="+d);
    每次都弹出一下d,看d有没有东西!