zoukankan      html  css  js  c++  java
  • Jquery+Eayui实现列表选择功能

    在做一个列表选择的功能,要实现一个Jquery列表选择器的效果,如图就是很常见的一种列表选择器
    在这里插入图片描述
    不过网上开源的可能要积分,资料没找到合适的,所以自己就简单写了一下,其实实现也不是很难。实现思路:左边双击之后获取元素,在右边附加上就好,右边选择列表双击之后就移除元素
    实现效果:
    在这里插入图片描述

    因为系统功能是easyui做的,页面左边是一个table,也是easyui的datagrid,所以就可以调对应方法获取双击某行的元素
    创建前端页面:

    <rapid:override name="content">
    		<div region="west" split="true" title="待选列表" style="400px;" >
    			<div class="site-search" >
    				<div id="search">
    		           <input type="text" name="s" class="text" id="areaName" placeholder="输入地区名称搜索" />
    		           <button type="button" onclick="javascript:queryOption.doQuery(1);" class="submit">搜索</button>
    	       		</div>
           		</div>
    			<input type="hidden" value="${tipsSeq}" id="tipsSeq"/>
    			<table id="areaList"></table>
    		</div>
    		<div region="center" title="已选列表" style="border:0;">
    			<table id="selectedList" style="100%;"></table>
    		</div>
    		<div region="south" >
    			<div align="right" style="height:31px;">
    				<input type="button" onclick="javascript:treeOption.closeDialog();" value="取消" />
    				<input type="button" onclick="javascript:treeOption.batchBind();" value="下一步" />
    			</div>
    		</div>
    	</div> 
    	</rapid:override>
    

    给右边的列表加上选择后就改变颜色为蓝色的css代码:

    #selectedList tr:hover{
    	  				background-color: #99ccff; color: #252525; cursor: pointer;
    	  			}
    	  			#selectedList tr:selected{
    	  				background-color: #0095E8; color: #fff;
    	  			}
    

    主要函数是调用easyui的双击事件,然后将获取到的数据放在addNodeToList函数里再调用,下面给出easyui的所有代码和自己写的addNodeToList函数

    onDblClickRow :function(rowIndex,rowData){
    						var selections = $("#areaList").datagrid('getSelections');
    						var areaSeq = selections[0].areaSeq;
    						var areaName = selections[0].areaName;
    						var status = selections[0].tipsAreaRelaStatus;
    						if(status =='1'){
    							$.messager.alert("操作提示","已配置过该提示语,继续配置数据将覆盖旧数据!","warning");
    							return;
    						}
    						//添加节点
    						addNodeToList(1,areaSeq,areaName,status);
    					}
    
    $('#areaList').treegrid({    
    					fit: true,
    					nowrap: true, 
    					autoRowHeight: true,
    					animate:true,
    					scrollbarSize: 0,
    					striped: true,
    					collapsible:true,
    					singleSelect:true,
    					rownumbers:true,
    					url:'/loadTipsAreaRelatedData.do?tipsSeq='+$("#tipsSeq").val(),
    					idField:'areaSeq',
    					treeField:'areaName',
    					columns:[[
    						{field:'ck', checkbox: true, hidden:true},
    						{field:'areaSeq', hidden:true},
    						{field:'areaName',title:'地区名称','60%'},
    						{field:'tipsAreaRelaStatus',title:'状态','40%',
    							formatter: function (val, rowdata, index) {
    								if(val =='1'){
    									return '<span style="color:#00B2EE;">已配置</span>';
    								}else{
    									return '<span>未配置</span>';
    								}
    							}	
    						}
    					]],
    					onBeforeLoad:function(row,param){//加载之前
    						if(row){
    							$(this).treegrid('options').url = '/loadSubTipsAreaRelatedData.do?tipsSeq='+$("#tipsSeq").val()+'&parentAreaSeq=' + row.areaSeq;
    						}else{
    							$(this).treegrid('options').url = '/loadTipsAreaRelatedData.do?tipsSeq='+$("#tipsSeq").val();
    						}
    					},
    					onDblClickRow :function(rowIndex,rowData){
    						var selections = $("#areaList").datagrid('getSelections');
    						var areaSeq = selections[0].areaSeq;
    						var areaName = selections[0].areaName;
    						var status = selections[0].tipsAreaRelaStatus;
    						if(status =='1'){
    							$.messager.alert("操作提示","已配置过该提示语,继续配置数据将覆盖旧数据!","warning");
    							return;
    						}
    						//添加节点
    						treeOption.addNodeToList(1,areaSeq,areaName,status);
    					}
    				});
    
    function addNodeToList(n,areaSeq,areaName,status){
    				var tableStr = $("#selectedList");
    				var trStr = "<tr id="+areaSeq
    				+" class='datagrid-row' ondblclick='javascript:removeNodeToList("+areaSeq+");''>"
    				+"<td>"+areaName+"</td></tr>";
    				var tr = $("#selectedList").find("tr");
    				var trNum = tr.length;
    				if(trNum == 0){
    					tableStr.append(trStr);
    				}else{
    					var count = 0;
    					//思路是:遍历表格,如果有元素就再添加,没有那个元素就添加
    					$("#selectedList tr").each(function(){
    						var id =$(this).attr("id");
    						if(areaSeq == id){
    							count++;
    						} 
    					});
    					if(count==0){
    						tableStr.append(trStr);
    					}
    				}
    			}
    

    右边列表双击可以移除元素:

    function removeNodeToList(areaSeq){
    				$("#selectedList").find("#"+areaSeq).remove();
    }
    

    思路:左边双击之后获取元素,在右边附加上就好,右边选择列表双击之后就移除元素

  • 相关阅读:
    [编程题] 回文数问题
    [编程题] 以字符串的形式读入两个数字,再以字符串的形式输出两个数字的和
    [编程题] 合并有序链表
    [编程题] 借用栈实现链表反转
    [编程题] 二叉树求深度
    pat 甲级 1045 ( Favorite Color Stripe ) (动态规划 )
    pat 甲级 1034 ( Head of a Gang )
    PAT public bike management (30)
    PAT 甲练习 1003 Emergency
    vim 自动代码格式调整
  • 原文地址:https://www.cnblogs.com/mzq123/p/10424352.html
Copyright © 2011-2022 走看看