`
superich2008
  • 浏览: 323046 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

测试模式对话框及div层的切换(特别适用于部门、岗位人员设置)

阅读更多

在OA系统中做部门、岗位管理的时候,通常有这么一个需求:设置人员列表,而且要求提供几种不同的方式来设置人员,例如:可以在所有人员中选择、可以通过部门选择人员、还可以通过岗位选择人员等等。

如何实现呢?可以通过弹出一个模态对话框的方式来实现(主要有3个文件,一个js文件,2个html页面)

1、设置人员主页面代码(testDialog.html)

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>测试模式对话框</title>

<script language="JavaScript">
function $()
{
return document.getElementById?document.getElementById(arguments[0]):eval(arguments[0]);
}

function initUsers()
{
if ($('userArray').value == "")
{
$('userNameArray').value = "";
}

var obj = new Object();
// 将已有的值传递过去
obj.name = $('userArray').value+","+$('userNameArray').value;
var result = window.showModalDialog('selectUsersDialog.html',obj,'dialogHeight:400px;dialogWidth:700px;dialogLeft:300;dialogTop:180;');
if(result == null)
{
return;
}
var userList="", userNameList="";
var len = result.length;
for (var i=0; i<len; i++)
{
var item = result[i].split("|");
if (i > 0)
{
userList += ",";
userNameList += ",";
}
userList += item[0];
userNameList += item[1];
}

$('userArray').value = userList;
$('userNameArray').value = userNameList;
}
</script>
</head>

<body>
<center><h3>测试模式对话框及div层的切换</h3></center>
<p></p><br/>
<table border="1" align="center" width="100%">
<tr>
<td align="right">设置人员</td>
<td align="left">
<input type="hidden" name="userArray" id="userArray" value="">
<textarea rows="4" cols="40" name="userNameArray" id="userNameArray" readonly="readonly">请选择人员。
</textarea>
<input type="button" value="设置人员" onclick="initUsers();" >
</td>
</tr>
</table>
</body>
</html>

2、人员选择模态窗口页面代码(selectUsersDialog.html)

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>人员选择</title>
<!-- 导入js文件 -->
<script language="JavaScript" src="js/testDialog.js"></script>
</head>
<body>
<form action="" name="testForm" method="post">
<table width="80%" border="1" align="center">
<tr>
<td height="30" colspan="3" align="right">
<input type="button" onclick="SetValue();" name="confirm" value=" 确 认 " />
<input type="button" onclick="shutwin();" name="cancel" value=" 取 消 " />
</td>
</tr>
<tr>
<!-- 待选项目 -->
<td width="35%" align="center">
<div onclick="showContent(this.nextSibling, document.getElementById('selectUsers'))">
所有人员列表
</div>
<div lang="content">
<select name="selectUsers" size="15" id="selectUsers" multiple="multiple" style="width: 269px">
<option value="U001">钱一</option>
<option value="U002">孙二</option>
<option value="U003">张三</option>
<option value="U004">李四</option>
<option value="U005">王五</option>
<option value="U006">赵六</option>

</select>
</div>
<div onclick="showContent(this.nextSibling, document.getElementById('selectDepts'))">
选择部门
</div>
<div style="display: none" lang="content">
<select name="selectDepts" size="15" id="selectDepts" multiple="multiple" style="width: 269px">
<option value="DEPT_D001">财务部</option>
<option value="DEPT_D002">行政部</option>
<option value="DEPT_D003">销售部</option>
</select>
</div>
<div onclick="showContent(this.nextSibling, document.getElementById('DeptOfUsers'))">
按部门选择人员
</div>
<div style="display: none" lang="content">
<select name="selectUserFromDept" id="allJob" onchange="changeDept(this);" style="width: 269px">
<option value="">请选择部门</option>
<option value="D001">财务部</option>
<option value="D002">行政部</option>
<option value="D003">销售部</option>
</select>
<select name="DeptOfUsers" size="15" multiple="multiple" id="DeptOfUsers" style="width: 269px">
</select>
</div>
<div onclick="showContent(this.nextSibling, document.getElementById('JobOfUsers'))">
按岗位选择人员
</div>
<div style="display: none" lang="content">
<select name="selectUserFromJob" id="allJob" onchange="changeJob(this);" style="width: 269px">
<option value="">请选择岗位</option>
<option value="J001">财务经理</option>
<option value="J002">人事经理</option>
<option value="J003">销售经理</option>
</select>
<select name="JobOfUsers" size="15" multiple="multiple" id="JobOfUsers" style="width: 269px">
</select>
</div>
</td>
<!-- 功能菜单 -->
<td width="10%" align="center" valign="middle">
<table width="100%" border="1">
<tr>
<td align="center">
<input type="button" name="Button" value=" 添 加 " onClick="DoAdd()" style="width: 80px" />
</td>
</tr>
<tr>
<td align="center">
<input type="button" name="Submit" value=" 移 除 " onClick="DoDel()" style="width: 80px" />
</td>
</tr>
<tr>
<td align="center">
<input type="button" name="Submit3" value="添加全部" onClick="DoAddAll()" style="width: 80px" />
</td>
</tr>
<tr>
<td align="center">
<input type="button" name="Submit2" value="移除全部" onClick="DoDelAll()" style="width: 80px" />
</td>
</tr>
</table>
</td>
<!-- 已选择项目 -->
<td width="35%" align="center">
<select name="savedUsers" size="15" multiple id="savedUsers" style="width: 269px">
</select>
</td>
</tr>
</table>
</form>
</body>
</html>

3、js代码(testDialog.js)

function $()
{
return document.getElementById?document.getElementById(arguments[0]):eval(arguments[0]);
}

var AllUsersSel = null; // 待选择的用户列表
var AllDeptsSel = null; // 待选择的部门列表
var DeptOfUsersSel = null; // 待选择的部门人员列表
var JobOfUsersSel = null; // 待选择的岗位人员列表
var SavedUsersSel = null; // 已选择的用户列表

function removeAll(obj)
{
/*var len = obj.options.length;
for (var i=0; i<len; i++)
{
obj.options.remove(0);
}*/
obj.options.length=0;
}

function changeDept(dept)
{
//alert(dept.value);
var deptUsers = $("DeptOfUsers");
removeAll(deptUsers);
// new Option('text', 'value');
if (dept.value == 'D001')
{
deptUsers.options.add(new Option('钱一', 'U001'));
deptUsers.options.add(new Option('孙二', 'U002'));
}
else if (dept.value == 'D002')
{
deptUsers.options.add(new Option('张三', 'U003'));
deptUsers.options.add(new Option('李四', 'U004'));
}
else if (dept.value == 'D003')
{
deptUsers.options.add(new Option('王五', 'U005'));
deptUsers.options.add(new Option('赵六', 'U006'));
}
sort_Main(SavedUsersSel);
}

function changeJob(job)
{
//alert(job.value);
var jobUsers = $("JobOfUsers");
removeAll(jobUsers);
// new Option('text', 'value');
if (job.value == 'J001')
{
jobUsers.options.add(new Option('张三', 'U003'));
jobUsers.options.add(new Option('李四', 'U004'));
}
else if (job.value == 'J002')
{
jobUsers.options.add(new Option('王五', 'U005'));
jobUsers.options.add(new Option('赵六', 'U006'));

}
else if (job.value == 'J003')
{
jobUsers.options.add(new Option('钱一', 'U001'));
jobUsers.options.add(new Option('孙二', 'U002'));
}
sort_Main(SavedUsersSel);
}


// 关闭
function shutwin()
{
window.close();
return;
}
// 保存
function SetValue()
{
// 将选择的值保存到数组中
var obj = new Array();
var len = SavedUsersSel.length;
for(var i=0; i<len; i++)
{
var item = SavedUsersSel.options[i];
obj.push(item.value+"|"+item.text);
}
window.returnValue = obj;
window.close();
}

window.onload=function()
{
AllUsersSel = $("selectUsers");
AllDeptsSel = $("selectDepts");
DeptOfUsersSel = $("DeptOfUsers");
JobOfUsersSel = $("JobOfUsers");
SavedUsersSel = $("savedUsers");

//从父窗口中获得传过来的值
var obj = window.dialogArguments;
var strs = obj.name;
//alert(strs);
//如果传过来的值为空或为",",则不采取操作
if(strs == "," || strs == "")
{
return;
}
else //分解传过来的值,然后加入到右边的select中的option中
{
var value = strs.split(",");
var len = value.length/2; // 传递的值是对称的
var tempLen;
for(var i=0; i<len; i++)
{
//将从父窗口中传过来的值显示在模态窗口的右边的select中。
SavedUsersSel.options.add(new Option(value[i+len], value[i]));
}// end-for-value

sort_Main(SavedUsersSel);
}// end-for-if
}

//全部添加到窗口的右边(此时的AllUsersSel,不一定是所有人员,而是当前展示的层)
function DoAddAll()
{
var len = AllUsersSel.length;
for(var i=0; i<len; i++)
{
var selectItem = AllUsersSel.options[i];
// appendChild()方法会影响到元素所属集合,即将原所属集合元素转移到现有集合中(不是拷贝)
SavedUsersSel.appendChild(selectItem);
len--;
i--;
}
//sort_Main(SavedUsersSel);
}
//全部移除到窗口的左边(此时的AllUsersSel,不一定是所有人员,而是当前展示的层)
function DoDelAll()
{
var len = SavedUsersSel.length;
for(var i=0; i<len; i++)
{
var selectItem = SavedUsersSel.options[i];
// appendChild()方法会影响到元素所属集合,即将原所属集合元素转移到现有集合中(不是拷贝)
AllUsersSel.appendChild(selectItem);
len--;
i--;
}
//sort_Main(SavedUsersSel);
}
//添加函数,将数据添加到窗口的右边(此时的AllUsersSel,不一定是所有人员,而是当前展示的层)
function DoAdd()
{
var this_sel = null;
var len1 = AllUsersSel.length;
for(var i=0; i<len1; i++)
{
this_sel = AllUsersSel.options[i];
if(this_sel.selected)
{
// 查看所有已选择的是否已经存在(如果存在则说明js功能异常了)
var len2 = SavedUsersSel.length;
var flag = false;
for(var j=0; j<len2; j++)
{
if(SavedUsersSel[j].value == this_sel.value)
{
flag = true;
break;
}
}
if (flag)
{
alert("js出现异常,要添加的选项已经存在!");
break;
}
// appendChild()方法会影响到元素所属集合,即将原所属集合元素转移到现有集合中(不是拷贝)
SavedUsersSel.appendChild(this_sel);
len1--;
i--;
}
}
//sort_Main(SavedUsersSel);
}
//移除函数,将数据移除到窗口的左边(此时的AllUsersSel,不一定是所有人员,而是当前展示的层)
function DoDel()
{
var this_sel = null;
var len1 = SavedUsersSel.length;
for(var i=0; i<len1; i++)
{
this_sel = SavedUsersSel.options[i];
if(this_sel.selected)
{
// 查看待选择的是否已经存在(如果存在则说明js功能异常了)
var len2 = AllUsersSel.length;
var flag = false;
for(var j=0; j<len2; j++)
{
if(AllUsersSel[j].value == this_sel.value)
{
flag = true;
break;
}
}
if (flag)
{
alert("js出现异常,要移除的选项在待选项中已经存在!");
break;
}
// appendChild()方法会影响到元素所属集合,即将原所属集合元素转移到现有集合中(不是拷贝)
AllUsersSel.appendChild(this_sel);
len1--;
i--;
}
}
//sort_Main(SavedUsersSel);
}
//选择函数,选择数据。
function sort_Main(the_saved_Sel)
{
/******** 如果检测到窗口左边的数据,右边已经存在了,则把窗口左边的数据进行移除掉。********/
var len = the_saved_Sel.length;
var tempLen, curValue;
for (var i=0; i<len; i++)
{
curValue = the_saved_Sel[i].value;
//移除所有人员中的数据
tempLen = AllUsersSel.length;
for(var j=0; j<tempLen; j++)
{
if(curValue == AllUsersSel[j].value)
{
AllUsersSel.options.remove(j);
break;
}
}
//移除所有部门中的数据
tempLen = AllDeptsSel.length;
for(var j=0; j<tempLen; j++)
{
if(curValue == AllDeptsSel[j].value)
{
AllDeptsSel.options.remove(j);
break;
}
}
//移除选中部门对应的所有人员中的数据
tempLen = DeptOfUsersSel.length;
for(var j=0; j<tempLen; j++)
{
if(curValue == DeptOfUsersSel[j].value)
{
DeptOfUsersSel.options.remove(j);
break;
}
}
//移除选中岗位对应的所有人员中的数据
tempLen = JobOfUsersSel.length;
for(var j=0; j<tempLen; j++)
{
if(curValue == JobOfUsersSel[j].value)
{
JobOfUsersSel.options.remove(j);
break;
}
}
}// end-for-the_saved_Sel
}

//div隐藏显示功能
function showContent(e, v_select)
{
// 隐藏所有div,条件是lang属性值为content
var divs = document.getElementsByTagName("div");
var len = divs.length;
for(var i=0; i<len; i++)
{
if(divs[i].lang=="content")
divs[i].style.display="none";
}
//显示当前传递进来的div数据
e.style.display="block";
// 获取当前div下的select选项值
AllUsersSel = $(v_select.id);
}

分享到:
评论

相关推荐

    模式对话框(可刷新)+可移动div+遮罩层

    在"CustomDiv"这个文件中,我们可以推测这可能包含了一段代码示例,演示如何创建一个具有上述特性的对话框:可刷新的模式对话框、可移动的div以及遮罩层。实现这样的功能通常涉及到以下几个步骤: 1. **创建模式...

    JQuery 模式对话框DIV

    **jQuery 模式对话框(Modal Dialog)使用详解** 在Web开发中,模式对话框是一种常用的交互元素,它能够阻止用户与页面其他部分的交互,直到对话框被关闭。jQuery库提供了一种简单的方式来实现这一功能,即jQuery ...

    div 模式对话框 js +Div

    在网页设计和开发中,`div` 模式对话框是一种常见的交互元素,它用于向用户展示临时信息或获取用户输入。在这个主题中,我们主要关注如何使用 `HTML`、`CSS` 和 `JavaScript`(特别是 `js` 和 `jQuery`)来创建一个...

    Jquery+CSS模式对话框

    在Web开发中,模式对话框(Modal Dialog)是一种常见的用户交互元素,用于在当前页面上显示一个半透明的遮罩层,焦点集中在一个独立的窗口,用户必须先处理这个对话框才能继续与主页面进行交互。这种设计可以有效地...

    JQuery 模式对话框实例

    在 jQuery 中,实现模式对话框通常依赖于第三方插件,如 jQuery UI 中的 Dialog 组件。尽管 jQuery 自身并不内置对话框功能,但通过与其他库结合,可以轻松创建出功能丰富的对话框效果。 首先,你需要引入 jQuery ...

    跳出div层对话框。。。。。。

    在网页设计中,"跳出div层对话框"通常是指在一个页面元素(如一个div)上创建可交互的弹出窗口,这种窗口常被用于显示警告、确认信息或提供额外的操作选项。这种效果可以通过多种技术实现,包括JavaScript、jQuery...

    页面中弹出对话框div

    在网页设计中,"页面中弹出对话框div"是一个常见的需求,用于向用户展示临时信息、确认操作或收集输入。对话框通常不离开主页面,而是覆盖在内容上,提供一种交互方式。本篇文章将深入探讨如何使用HTML的div元素来...

    模式对话框传值实例

    在网页开发中,模式对话框(Modal Dialog)是一种常见的用户交互...记住,这种数据交换适用于简单的场景,对于复杂的应用,可能需要借助更强大的状态管理库,如Redux或Vuex,来更好地管理和同步对话框与主页面的状态。

    Div 弹出 DIV移动 遮罩层 Div对话框 Div窗口

    Div 对话框 可移动 可设遮罩层 可以同时打开多个对话框,JS源代码

    jquery 1.3 模式对话框

    在jQuery 1.3中,模式对话框通过创建一个覆盖整个页面的半透明背景层和一个浮动在顶部的对话框实现这一效果,这样可以确保用户的注意力集中在当前的对话框上。 要创建一个模式对话框,我们需要首先引入jQuery库和...

    纯js(javascript)弹出层 对话框,div 模拟系统对话框

    在JavaScript编程中,弹出层和对话框是用户交互的重要组成部分。它们通常用于显示警告、确认信息或收集用户输入。本篇文章将详细讲解如何使用纯JavaScript(无依赖库如jQuery等)来创建自定义的弹出层对话框,以及...

    div弹出框、对话框、模态窗口

    在网页设计和开发中,`div` 弹出框、对话框和模态窗口是创建交互式用户体验的重要组成部分。这些元素通常用于显示警告、询问用户输入或者提供额外的信息,而不会中断用户对主要页面的浏览。本文将深入探讨这些概念,...

    Javascript实现div对话框效果

    本主题聚焦于使用JavaScript实现div对话框效果,这是一种常见的交互设计,常用于提示信息、用户确认操作或者展示详细内容。对话框通常具有可定制的标题、内容、按钮以及可选的黑背景,以确保用户的注意力集中在...

    纯CSS实现div弹出对话框

    纯CSS实现div弹出对话框 可以应用于C#,.net 里面。 页面比较好看。

    div层完美切换代码

    在网页设计中,`div`层的切换是一种常见的交互效果,用于实现如模态框、选项卡、轮播图等功能。下面将详细讲解三种实现`div`层切换的方法,并探讨如何利用这些原理来创建更出色的界面。 ### 1. CSS(层叠样式表)...

    Div模拟对话框 .

    在模拟对话框中,`div`通常被用作对话框的基础结构,通过设置其CSS属性如`position`(定位)、`border`(边框)、`padding`(内边距)和`background-color`(背景色)等来创建对话框的外观。 描述中提到的"Div模拟...

    jquery simplemodal模式对话框

    **jQuery SimpleModal模式对话框详解** 在Web开发中,用户交互是至关重要的,而模式对话框(Modal Dialog)是提高用户体验的一种有效手段。jQuery SimpleModal是一款轻量级、可定制的模态对话框插件,它使开发者...

    js控制div左右切换带左右箭头

    在网页设计中,"js控制div左右切换带左右箭头"是一种常见的交互效果,它用于展示多内容区域,用户可以通过点击或悬浮在左、右箭头上实现内容的切换。这种效果常见于产品展示、轮播图或者选项卡式布局中,能够提供...

    asp.net中模式对话框的使用以及删除时确认

    在ASP.NET开发中,模式对话框(Modal Dialog)是一种常见的用户交互方式,它可以在用户进行特定操作时弹出,阻止用户与页面其他部分的交互,直到对话框被关闭。模式对话框常用于需要用户确认、输入信息或者显示警告...

    ASP.Net中的模式对话框

    &lt;div id="dialog" title="模式对话框"&gt; 这里是对话框内容... &lt;/div&gt; $(function() { $("#dialog").dialog({ modal: true, width: 400, height: 200 }); }); ``` 2. **ASP.NET AJAX Control Toolkit**:ASP...

Global site tag (gtag.js) - Google Analytics