当前位置: 首页 > news >正文

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

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

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

 

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;">&nbsp;群组<s:property value="group_name"></s:property>    </span>
<span id="menberCount" style="color:#838a97;">&nbsp;${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="&lt;&lt;添加" onclick="addMember()" />
</div>
<br/>
<div style="height:auto;">
<input class="addmemberBtn addmemberBtnon" onmouseover="setCss(event,'on')" onmouseout="setCss(event,'off')" type="button" value="移除&gt;&gt;" 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;">&nbsp;所有企业成员</span>
<span style="color:#838a97;">&nbsp;${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%>')">&nbsp;<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>

 

 

相关文章:

  • $jQuery 重写Alert样式方法
  • unbunt的svn重启动命令
  • JQ实现购物车价格计算
  • Android UI开发第二十九篇——Android中五种常用的menu(菜单)
  • 安装配置资产管理软件GLPI
  • 走得不是很前但还是走在时代尖端
  • 一行python 生成终端二维码
  • Node.js 0.8.22 稳定版发布
  • SLAM技能树
  • TiDB 源码阅读系列文章(十)Chunk 和执行框架简介
  • openwrt无线连接互联网的实现原理【1】
  • 大作业分析
  • 常用Git操作
  • 判断是否IE6,如果是则提示升级浏览器
  • Java 多线程的基本概念及实现方式
  • 2017-08-04 前端日报
  • Android路由框架AnnoRouter:使用Java接口来定义路由跳转
  • Angular6错误 Service: No provider for Renderer2
  • Docker 笔记(2):Dockerfile
  • ES10 特性的完整指南
  • JS创建对象模式及其对象原型链探究(一):Object模式
  • Linux Process Manage
  • Spring Boot MyBatis配置多种数据库
  • springMvc学习笔记(2)
  • Vue.js 移动端适配之 vw 解决方案
  • Web Storage相关
  • 创建一种深思熟虑的文化
  • 好的网址,关于.net 4.0 ,vs 2010
  • 前端设计模式
  • 强力优化Rancher k8s中国区的使用体验
  • 一个6年java程序员的工作感悟,写给还在迷茫的你
  • 运行时添加log4j2的appender
  • Prometheus VS InfluxDB
  • 阿里云API、SDK和CLI应用实践方案
  • 不要一棍子打翻所有黑盒模型,其实可以让它们发挥作用 ...
  • 正则表达式-基础知识Review
  • #{}和${}的区别是什么 -- java面试
  • (2021|NIPS,扩散,无条件分数估计,条件分数估计)无分类器引导扩散
  • (Arcgis)Python编程批量将HDF5文件转换为TIFF格式并应用地理转换和投影信息
  • (Redis使用系列) SpringBoot 中对应2.0.x版本的Redis配置 一
  • (vue)el-checkbox 实现展示区分 label 和 value(展示值与选中获取值需不同)
  • (分类)KNN算法- 参数调优
  • (附源码)springboot电竞专题网站 毕业设计 641314
  • (附源码)springboot高校宿舍交电费系统 毕业设计031552
  • (附源码)ssm高校社团管理系统 毕业设计 234162
  • (附源码)计算机毕业设计SSM保险客户管理系统
  • (接口封装)
  • (解决办法)ASP.NET导出Excel,打开时提示“您尝试打开文件'XXX.xls'的格式与文件扩展名指定文件不一致
  • (七)MySQL是如何将LRU链表的使用性能优化到极致的?
  • (转)重识new
  • *setTimeout实现text输入在用户停顿时才调用事件!*
  • .NET CORE 3.1 集成JWT鉴权和授权2
  • .NET/C# 使用 SpanT 为字符串处理提升性能
  • .net快速开发框架源码分享
  • .NET使用HttpClient以multipart/form-data形式post上传文件及其相关参数