先看图片:从图片上可以看出,最后一个职位没有出来。
就是用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了一下,
当选择厂区时如下:最上面一个是获取的厂区,当选择一个厂区时执行了下面的两个,大家可以看出来,两个是一样的,这是我的疑惑之一,为什么异步执行了两次?
当我再点击选择部门时,执行代码如下:可以看出,又执行了两次,但不同的是一个获取到了值,一个没有获取到值。这是我的疑惑之二?
还望高手指点,小弟不胜感激。
就是用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了一下,
当选择厂区时如下:最上面一个是获取的厂区,当选择一个厂区时执行了下面的两个,大家可以看出来,两个是一样的,这是我的疑惑之一,为什么异步执行了两次?
当我再点击选择部门时,执行代码如下:可以看出,又执行了两次,但不同的是一个获取到了值,一个没有获取到值。这是我的疑惑之二?
还望高手指点,小弟不胜感激。
你是不是用的
new Boxy(element, options)构造函数;创建一个新的boxy对话框。element是对话框的内容;任何有效的参数,jQuery的$()函数在这里也是有效的。options是一个配置选项的散列,见下面详细的资料。
这个构造的,然后隐藏了?
hide(after)
隐藏对话框,after为可选回调函数,完成后执行。可链接。
对的,我也遇到同样的问题
你刷新一下打印出input框的数量就发现。原来input数量变多了。暂时没发现解决方法