两个listbox实现选项的添加删除和搜索


Posted in Javascript onMarch 01, 2013

两个listbox实现选项的添加,删除和搜索

贴一下主要的js代码,一些资源我就不传了。下面是效果图。

两个listbox实现选项的添加删除和搜索

两个listbox实现选项的添加删除和搜索

两个listbox实现选项的添加删除和搜索

两个listbox实现选项的添加删除和搜索

group.js

function addMember() 
{ 
//右侧选中的项添加到左侧 
var add=$("#newAddMembersId").val(); 
var del=$("#deleteMembersId").val(); 
var ext=$("#existedMemberId").val(); 
var newAddId=""; 
//获取新加的userId 
var addedUsers=$("#enterpriseMember input:checkbox[checked]"); 
for(var i=0;i<addedUsers.length;i++) 
{ 
var checkbox=$(addedUsers[i]); 
var uid=checkbox.next().val(); 
if(add.indexOf(uid)>=0 || (ext.indexOf(uid)>=0 && del.indexOf(uid)<0)) 
{ 
continue; 
} 
if(!(ext.indexOf(uid)>=0 && del.indexOf(uid)>=0)) 
{ 
if(add.indexOf(uid)<0) 
{ 
if(add.length==0) 
add+=uid; 
else 
add+=","+uid; 
} 
} 
//添加数据到左侧列表 
checkbox.removeAttr("checked"); 
var userDiv=checkbox.parent().parent().parent(); 
$("#groupMember").append(userDiv.clone()); 
del=del.replace(uid+",",""); 
del=del.replace(uid,""); 
$("#deleteMembersId").val(del); } 
$("#newAddMembersId").val(add); 
} 
function removeMember() 
{ 
//左侧移除成员 
var add=$("#newAddMembersId").val(); 
var del=$("#deleteMembersId").val(); 
var newRemoveId=""; 
var removedUsers=$("#groupMember input:checkbox[checked]"); 
for(var i=0;i<removedUsers.length;i++) 
{ 
var checkbox=$(removedUsers[i]); 
var uid=checkbox.next().val(); 
if(del.indexOf(uid)>=0) 
{ 
continue; 
} 
if(del.indexOf(uid)<0) 
{ 
if(del.length==0) 
del+=uid; 
else 
del+=","+uid; 
} 
//左侧列表中移除数据 
checkbox.removeAttr("checked"); 
var userDiv=checkbox.parent().parent().parent(); 
userDiv.remove(); 
//$("#enterpriseMember").append(userDiv); 
add=add.replace(uid + ",", ""); 
add=add.replace(uid, ""); 
$("#newAddMembersId").val(add); 
} 
$("#deleteMembersId").val(del); 
} 
//搜索成员,按名字,按部门 
function searchMember() 
{ 
var searchTxt=$.trim($("#searchTxt").val()); 
var memberLIsts=$(".dmlist"); 
//移除上次的结果 
var lastReusts=$(".tempResult"); 
for(var i=0;i<lastReusts.length;i++) 
{ 
$(lastReusts[i]).remove(); 
} 
//为空搜索显示全部列表 
if(searchTxt=="" || searchTxt=="搜索企业成员") 
{ 
//show all hidded ml 
for(var i=0;i<memberLIsts.length;i++) 
{ 
$(memberLIsts[i]).css("display",""); 
} 
return ; 
} 
//hide all memberlist,隐藏所有的列表 
for(var i=0;i<memberLIsts.length;i++) 
{ 
$(memberLIsts[i]).css("display","none"); 
} 
//搜索------------- 
var enterpriseMemberDiv=$("#enterpriseMember"); 
//search by name,add class:tempResult 
var names=$(".sname"); 
for(var i=0;i<names.length;i++) 
{ 
var name=$(names[i]).text(); 
if(name.indexOf(searchTxt)>=0) 
{ 
var result=$(names[i]).parent().parent().parent().clone(); 
result.addClass("tempResult"); 
result.css("display",""); 
enterpriseMemberDiv.append(result); 
} 
} 
//search by departmentName 
var departmentNames=$(".sdepartment"); 
for(var i=0;i<departmentNames.length;i++) 
{ 
var name=$(departmentNames[i]).text(); 
if(name.indexOf(searchTxt)>=0) 
{ 
var result=$(departmentNames[i]).parent().parent().parent().clone(); 
result.addClass("tempResult"); 
result.css("display",""); 
enterpriseMemberDiv.append(result); 
} 
} 
} 
function clearTxt() 
{ 
var txt=$.trim($("#searchTxt").val()); 
if(txt=="搜索企业成员") 
$("#searchTxt").val(""); 
} 
function setsearchTxt() 
{ 
var txt=$.trim($("#searchTxt").val()); 
if(txt=="") 
$("#searchTxt").val("搜索企业成员"); 
} 
//展开折叠器 
function folderToggle(event,basePath) 
{ 
var evnet=event||window.event; 
var arrowDiv=event.target||event.srcElement; 
var closeimg=basePath+"/images/folder_close.PNG"; 
var openimg=basePath+"/images/folder_open.PNG"; 
var srcval=$(arrowDiv).attr("src"); 
if(srcval==closeimg) 
$(arrowDiv).attr("src",openimg); 
if(srcval==openimg) 
$(arrowDiv).attr("src",closeimg); 
var listDiv=$(arrowDiv).parent().next().next().next(); 
listDiv.toggleClass("memberlist"); 
} 
//点击名字折叠 
function folderNameToggle(event,basePath) 
{ 
var evnet=event||window.event; 
var arrowDiv=event.target||event.srcElement; 
var closeimg=basePath+"/images/folder_close.PNG"; 
var openimg=basePath+"/images/folder_open.PNG"; 
var srcval=$(arrowDiv).attr("src"); 
if(srcval==closeimg) 
$(arrowDiv).attr("src",openimg); 
if(srcval==openimg) 
$(arrowDiv).attr("src",closeimg); 
var listDiv=$(arrowDiv).parent().next().next(); 
listDiv.toggleClass("memberlist"); 
} 
function folderNumToggle(event,basePath) 
{ 
var evnet=event||window.event; 
var arrowDiv=event.target||event.srcElement; 
var closeimg=basePath+"/images/folder_close.PNG"; 
var openimg=basePath+"/images/folder_open.PNG"; 
var srcval=$(arrowDiv).attr("src"); 
if(srcval==closeimg) 
$(arrowDiv).attr("src",openimg); 
if(srcval==openimg) 
$(arrowDiv).attr("src",closeimg); 
var listDiv=$(arrowDiv).parent().parent().next().next(); 
listDiv.toggleClass("memberlist"); 
} 

function setCss(event,onoff) 
{ 
var theclass=$.trim(onoff); 
var offclass="addmemberBtnoff"; 
var onclass="addmemberBtnon"; 
var event=event||window.event; 
var thisbtn=event.target||event.srcElement; 
$(thisbtn).removeClass(onclass); 
$(thisbtn).removeClass(offclass); 
if(theclass=="on") 
{ 
$(thisbtn).addClass(onclass); 
} 
else 
{ 
$(thisbtn).addClass(offclass); 
} 
}

test.jsp 
<%@ page language="java" pageEncoding="UTF-8"%> 
<%@ include file="/pages/common/Taglibs.jsp"%> 
<%@ include file="/pages/common/Header.jsp"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 
<title>添加群组成员</title> 
<script type="text/javascript" src="<%=basePath%>/script/group.js"></script> 
<script type="text/javascript"> 
$(document).keydown(function (event){ 
if(event && event.keyCode==13){ 
$("#searchBtn").click(); 
} 
}); 
function backpage(group_id){ 
//window.history.back(); 
window.location.href="<%=basePath%>/server/group?group_id="+group_id; 
} 
function closeWin() 
{ 
this.close(); 
} 
function saveChanges() { 
function okFun() { 
var deleteMembersId = $("#deleteMembersId").val(); 
var newAddMembersId = $("#newAddMembersId").val(); 
var group_id = $("#group_id").val(); 
window.location.href = "<%=basePath%>/server/group!saveGroupMember?group_id=" 
+ group_id 
+ "&newAddMembersId=" 
+ newAddMembersId 
+ "&deleteMembersId=" + deleteMembersId; 
}; 
function cancelFun() { 
}; 
//PopuMsgBox("确认提示","是否保存?",okFun,cancelFun,150,100); 
okFun(); 
} 
</script> 
</head> 
<body class="bgClass"> 
<div id="addGroupMembercontainer" style="padding:20px 40px;width:auto;height:auto;"> 
<div class="roundGroup" style="float:left;width:241px;height:380px;"> 
<div style="margin-bottom:5px;margin-top:10px;padding-right:2px;"> 
<span class="spangrouptitle" style="line-height:16px;color:#404754;font-weight:bold;font-size:13px;"> 群组<s:property value="group_name"></s:property> </span> 
<span id="menberCount" style="color:#838a97;"> ${gNumber}人</span><br/> 
<hr style="border: 1px dotted #C0D3DC"/> 
</div> 
<div id="groupMember" style="margin-right:8px;height:306px;overflow-y:auto;overflow-x:hidden;width:237px;"> 
<!-- 内容列表 --> 
<s:if test="#request.groupMemberList!=null && #request.groupMemberList.size!=0"> 
<s:iterator value="#request.groupMemberList" id="gmember"> 
<div style="padding-left:5px;padding-right:1px;"> 
<div style="height:16px;" onclick="toggleCheck(event);"> 
<div style="width:auto;float:left;"> 
<input type="checkbox" /> 
<input type="hidden" value="<s:property value="#gmember.id"/>" name="userId" /> 
<span style="color:#404754;"><s:property value="#gmember.name" /></span> 
</div> 
<div class="positionblue" style="float:right;width:auto;text-align:right;"> 
<span style="color:#838a97;"><s:property value="#gmember.position_name" /></span> 
</div> 
</div> 
<div style="clear:left;"></div> 
</div> 
</s:iterator> 
</s:if> 
</div> 
</div> 
<div style="float:left;width:80px;padding-top:150px;text-align:center;"> 
<div style="height: auto;"> 
<input class="addmemberBtn addmemberBtnon" onmouseover="setCss(event,'on')" onmouseout="setCss(event,'off')" type="button" value="<<添加" onclick="addMember()" /> 
</div> 
<br/> 
<div style="height:auto;"> 
<input class="addmemberBtn addmemberBtnon" onmouseover="setCss(event,'on')" onmouseout="setCss(event,'off')" type="button" value="移除>>" onclick="removeMember()" /> 
</div> 
</div> 
<div class="roundGroup" style="float:left;width:241px;height:380px;"> 
<div style="margin-bottom:5px;margin-top:10px;padding-right:2px;"> 
<span class="spangrouptitle" style="color:#404754;font-weight:bold;font-size:13px;"> 所有企业成员</span> 
<span style="color:#838a97;"> ${eNumber}人</span><br/> 
<hr style="border: 1px dotted #C0D3DC" /> 
</div> 
<div style="height:30px;padding-left:5px;"> 
<div style="height:14px;float:left;"><input id="searchTxt" style="width:215px;line-height:14px;color:#838a97;" type="text" value="搜索企业成员" onfocus="clearTxt()" onblur="setsearchTxt()"/></div> 
<div style="height:14px;float:left;margin-top:4px;"><img id="searchBtn" onclick="searchMember();" style="width:14px;height:14px;cursor:pointer;" src="<%=basePath%>/images/searchBtn.PNG"/></div> 
<div style="clear:both;"></div> 
</div> 
<div id="enterpriseMember" style="height:280px;overflow-y:auto;overflow-x:hidden;width:233px;"> 
<!-- 内容列表 --> 
<s:if test="#request.departmentMemberList!=null && #request.departmentMemberList.size!=0"> 
<s:iterator value="#request.departmentMemberList" id="department"> 
<div class="dmlist" style="padding-bottom:2px;"> 
<div style="float:left;height:13px;padding-top:0px;"><img class="folder" style="" src="<%=basePath%>/images/folder_close.PNG" onclick="folderToggle(event,'<%=basePath%>')"/></div> 
<div style="float:left;height:13px;"><span style="cursor:pointer;" onclick="folderNameToggle(event,'<%=basePath%>')"><s:property value="#department.departmentName"/><span style="color:#838a97;" onclick="folderNumToggle(event,'<%=basePath%>')"> <s:property value="#department.memberCount"/>人</span></span></div> 
<div style="clear:both;"></div> 
<div class="ml memberlist"> 
<s:iterator value="#department.memberList" id="emember"> 
<div style="padding-left:5px;padding-right:1px;"> 
<div style="height:16px;"> 
<div style="float:left;"> 
<input type="checkbox"/> 
<input type="hidden" value="<s:property value="#emember.id"/>" name="userId" /> 
<span class="sname" style="color:#404754;"><s:property value="#emember.name" /></span> 
</div> 
<div class="positionblue" style="float:right;text-align:right;height:16px;"> 
<span class="sdepartment" style="color:#838a97;"><s:property value="#emember.position_name" /></span> 
</div> 
</div> 
<div style="clear:both;"></div> 
</div> 
</s:iterator> 
</div> 
</div> 
</s:iterator> 
</s:if> 
</div> 
</div> 
<div style="clear:both;width:600px;"> 
<div style="text-align:right;"> 
<input class="commonButton" style="" type="button" value="保存" onclick="saveChanges()"/> 
<input type="hidden" id="newAddMembersId" name="newAddMembersId" value=""/> 
<input type="hidden" id="deleteMembersId" name="deleteMembersId" value=""/> 
<input type="hidden" id="existedMemberId" name="existedMemberId" value="${existedMemberId}"/> 
<input type="hidden" id="group_id" name="group_id" value="${group_id}"/> 
</div> 
</div> 
</div> 
</body> 
</html>
Javascript 相关文章推荐
js 绑定带参数的事件以及手动触发事件
Apr 27 Javascript
jquery easyui combox一些实用的小方法
Dec 25 Javascript
原生JS实现美图瀑布流布局赏析
Sep 07 Javascript
浅谈js原生拖放
Nov 21 Javascript
jQuery实现优雅的弹窗效果(6)
Feb 08 Javascript
Node.js编写CLI的实例详解
May 17 Javascript
详解探索 vuex 2.0 以及使用 vuejs 2.0 + vuex 2.0 构建记事本应用
Jun 16 Javascript
vue-cli安装使用流程步骤详解
Nov 08 Javascript
redux.js详解及基本使用
May 24 Javascript
vue响应式更新机制及不使用框架实现简单的数据双向绑定问题
Jun 27 Javascript
node.js中module模块的功能理解与用法实例分析
Feb 14 Javascript
微信分享invalid signature签名错误踩过的坑
Apr 11 Javascript
DWZ table的原生分页浅谈
Mar 01 #Javascript
jQuery编辑器KindEditor4.1.4代码高亮显示设置教程
Mar 01 #Javascript
循环 vs 递归浅谈
Feb 28 #Javascript
JavaScript对象创建及继承原理实例解剖
Feb 28 #Javascript
jquery显示和隐藏div特效实例
Feb 27 #Javascript
JS等比例缩小图片尺寸的实例
Feb 27 #Javascript
JQuery切换显示的效果实例代码
Feb 27 #Javascript
You might like
PHP Global变量定义当前页面的全局变量实现探讨
2013/06/05 PHP
php技术实现加载字体并保存成图片
2015/07/27 PHP
Yii 2中的load()和save()示例详解
2017/08/03 PHP
静态页面下用javascript操作ACCESS数据库(读增改删)的代码
2007/05/14 Javascript
(jQuery,mootools,dojo)使用适合自己的编程别名命名
2010/09/14 Javascript
文本框回车提交与禁止提交示例
2013/09/27 Javascript
JS中的构造函数详细解析
2014/03/10 Javascript
js实现在网页上简单显示时间的方法
2015/03/02 Javascript
如何实现chrome浏览器关闭页面时弹出“确定要离开此面吗?”
2015/03/05 Javascript
jQuery实现简单的文件上传进度条效果
2020/03/26 Javascript
基于JavaScript代码实现pc与手机之间的跳转
2015/12/23 Javascript
JavaScript cookie详解及简单实例应用
2016/12/31 Javascript
jQuery实现弹出窗口弹出div层的实例代码
2017/01/09 Javascript
Vue.js原理分析之observer模块详解
2017/02/17 Javascript
bootstrap的工具提示实例代码
2017/05/17 Javascript
Angular客户端请求Rest服务跨域问题的解决方法
2017/09/19 Javascript
JS实现延迟隐藏功能的方法(类似QQ头像鼠标放上展示信息)
2017/12/28 Javascript
详解.vue文件解析的实现
2018/06/11 Javascript
微信小程序实现之手势锁功能实例代码
2018/07/19 Javascript
jquery实现的简单轮播图功能【适合新手】
2018/08/17 jQuery
javascript中关于类型判断的一些疑惑小结
2018/10/14 Javascript
JS使用cookie保存用户登录信息操作示例
2019/05/30 Javascript
VTK与Python实现机械臂三维模型可视化详解
2017/12/13 Python
python 实现单通道转3通道
2019/12/03 Python
Python 生成VOC格式的标签实例
2020/03/10 Python
用python写爬虫简单吗
2020/07/28 Python
python tqdm库的使用
2020/11/30 Python
解析html5 canvas实现背景鼠标连线动态效果代码
2019/06/17 HTML / CSS
AmazeUI 面板的实现示例
2020/08/17 HTML / CSS
给老婆道歉的话
2015/01/20 职场文书
2015年汽车销售工作总结
2015/04/07 职场文书
2015年教研组工作总结
2015/05/04 职场文书
python 爬取豆瓣网页的示例
2021/04/13 Python
Java Kafka 消费积压监控的示例代码
2021/07/01 Java/Android
使用CSS设置滚动条样式
2022/01/18 HTML / CSS
关于MySQL临时表为什么可以重名的问题
2022/03/22 MySQL