两个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 相关文章推荐
各浏览器中querySelector和querySelectorAll的实现差异分析
May 23 Javascript
JS自调用匿名函数具体实现
Feb 11 Javascript
jQuery之Deferred对象详解
Sep 04 Javascript
jQuery判断一个元素是否可见的方法
Jun 05 Javascript
信息页文内画中画广告js实现代码(文中加载广告方式)
Jan 03 Javascript
基于js实现二级下拉联动
Dec 17 Javascript
BootStrap Fileinput的使用教程
Dec 30 Javascript
详解node.js的http模块实例演示
Jul 12 Javascript
React事件处理的机制及原理
Dec 03 Javascript
实例讲解JavaScript预编译流程
Jan 24 Javascript
Vant Weapp组件踩坑:picker的初始赋值解决
Nov 12 Javascript
代码块高亮可复制显示js插件highlight.js+clipboard.js整合
Feb 15 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通过字符串调用函数示例
2014/03/02 PHP
php实现建立多层级目录的方法
2014/07/19 PHP
PHP创建PowerPoint2007文档的方法
2015/12/10 PHP
PHP错误和异常处理功能模块示例
2016/11/12 PHP
PHP查询分页的实现代码
2017/06/09 PHP
Yii支持多域名cors原理的实现
2018/12/05 PHP
Thinkphp 框架基础之入口文件功能、定义与用法分析
2020/04/27 PHP
求数组最大最小值方法适用于任何数组
2013/08/16 Javascript
js中对象的声明方式以及数组的一些用法示例
2013/12/11 Javascript
跟我学Nodejs(三)--- Node.js模块
2014/05/25 NodeJs
jQuery获取checkboxlist的value值的方法
2015/09/27 Javascript
jQuery取得iframe中元素的常用方法详解
2016/01/14 Javascript
JS二叉树的简单实现方法示例
2017/04/05 Javascript
基于JavaScript实现评论框展开和隐藏功能
2017/08/25 Javascript
Three.js基础学习之场景对象
2017/09/27 Javascript
轻松理解vue的双向数据绑定问题
2017/10/30 Javascript
浅谈ajax在jquery中的请求和servlet中的响应
2018/01/22 jQuery
python模块restful使用方法实例
2013/12/10 Python
python实现爬虫统计学校BBS男女比例之数据处理(三)
2015/12/31 Python
Python函数定义及传参方式详解(4种)
2019/03/18 Python
python,Django实现的淘宝客登录功能示例
2019/06/12 Python
python图片二值化提高识别率代码实例
2019/08/24 Python
记录一下scrapy中settings的一些配置小结
2020/09/28 Python
python使用bs4爬取boss直聘静态页面
2020/10/10 Python
CSS3色彩模式有哪些?CSS3 HSL色彩模式的定义
2016/04/26 HTML / CSS
美国休闲服装品牌:J.Crew Factory
2017/03/04 全球购物
Pretty Little Thing美国:时尚女性服饰
2018/08/27 全球购物
Kiwi.com中国:找到特价机票并发现新目的地
2019/10/27 全球购物
俄罗斯第一家篮球店:StreetBall
2020/07/30 全球购物
年终自我鉴定
2013/10/09 职场文书
办公室副主任岗位职责
2013/11/25 职场文书
优秀应届本科生求职信
2014/07/19 职场文书
2014旅游局领导班子四风问题对照检查材料思想汇报
2014/09/19 职场文书
导游词之无锡梅园
2019/11/28 职场文书
Java 在生活中的 10 大应用
2021/11/02 Java/Android
分析SQL窗口函数之聚合窗口函数
2022/04/21 Oracle