先看图片:从图片上可以看出,最后一个职位没有出来。
就是用jquery.boxy来实现的弹出层。
都是用的异步获取的,代码如下:
$(document).ready(function(){
$(document).ready(function(){
    $.post("user/userManage!getFactory.action",readyFactory);
});
});
function readyFactory(result,status){
if("success"==status){
clearSel(document.getElementById("departmentId"));
clearSel(document.getElementById("positionId"));
$("#factoryId").append("<option value=''>请选择</option>");
for(var i=0;i<result.length;i++){
$("#factoryId").append("<option value="+result[i].factoryId+">"+result[i].factoryName+"</option>");
$("#factoryId2").append("<option value="+result[i].factoryId+">"+result[i].factoryName+"</option>");
}
}
}
预先加载厂区
html如下:<tr><td>所属厂区</td>
      <td><select id="factoryId" name="factoryId" on onchange="getDepartment()"></select>
      <font color="#FF0000">*</font></td></tr>
    <tr><td>所属部门</td>
      <td><select name="departmentId" id="departmentId" onchange="getPosition()"></select>
      <font color="#FF0000">*</font></td></tr>
    <tr><td>所属职位</td>
      <td><select name="positionId" id="positionId"></select>
      <font color="#FF0000">*</font></td></tr>
当选择厂区时异步调出部门,代码如下:function getDepartment(){
clearSel(document.getElementById("departmentId"));
clearSel(document.getElementById("positionId"));
//var factoryId = document.getElementById("factoryId");
//var factoryId1 = factoryId.options[factoryId.selectedIndex].value;
var factoryId1 = $("#factoryId").val();
if(factoryId1!=null){
$.post("user/userManage!getDepartment.action",
{factoryId:factoryId1},function(result,status){
if("success"==status){
$("#departmentId").append("<option value=''>请选择</option>");
for(var i=0;i<result.length;i++){
$("#departmentId").append("<option value="+result[i].departmentId+">"+result[i].departmentName+"</option>");
}
}
});
}
}
当选择部门时调出职位,代码如下:
function getPosition(){
clearSel(document.getElementById("positionId"));
//var departmentId = document.getElementById("departmentId");
//var departmentId1 = departmentId.options[departmentId.selectedIndex].value;
var departmentId1 = $("#departmentId").val();
if(departmentId1!=null){
$.post("user/userManage!getPosition.action",
{departmentId:departmentId1},function(result,status){
if("success"==status){
for(var i=0;i<result.length;i++){
$("#positionId").append("<option value="+result[i].positionId+">"+result[i].positionName+"</option>");
}
}
});
}
}
可到这里就没出来。
后来我在firefox上firebug了一下,
当选择厂区时如下:最上面一个是获取的厂区,当选择一个厂区时执行了下面的两个,大家可以看出来,两个是一样的,这是我的疑惑之一,为什么异步执行了两次?
当我再点击选择部门时,执行代码如下:可以看出,又执行了两次,但不同的是一个获取到了值,一个没有获取到值。这是我的疑惑之二?
还望高手指点,小弟不胜感激。

解决方案 »

  1.   

    哦  忘了说了,在ie8上没问题,在ie6、ie7上也有这个问题。
      

  2.   

    在google浏览器上也好使吧?我以前就遇到过类似的问题
      

  3.   

    google浏览器没问题,可以,现在就是ie6、7不行。
      

  4.   


    你是不是用的
    new Boxy(element, options)构造函数;创建一个新的boxy对话框。element是对话框的内容;任何有效的参数,jQuery的$()函数在这里也是有效的。options是一个配置选项的散列,见下面详细的资料。
    这个构造的,然后隐藏了?
    hide(after)
    隐藏对话框,after为可选回调函数,完成后执行。可链接。
    对的,我也遇到同样的问题
    你刷新一下打印出input框的数量就发现。原来input数量变多了。暂时没发现解决方法