jquery实现左右上下移动

最近再做报表时候,直接把全部字段都导出了,但这不太灵活。回忆老师讲过的项目做报表如下左右上下移功能灵活控制,所以就尝试下咯。

js代码

	function selected(thiz)
	{
		var name = thiz.name;
		if(name=="right")
			$("select[name='left']").val("");
		else
			$("select[name='right']").val("");
	}
	function Shift(thiz)
	{
		var right = $("select[name='right']");
		var left = $("select[name='left']");
		if(thiz=="left" && right.val() != ""){
			lrShift(right,left);
		}else if(thiz=="right" && left.val() != ""){
			lrShift(left,right);
		}

		//获取选中的值
	}
	//从dest移动到target
	function lrShift(dest,target)
	{
		var childrens = dest.children();
		var args = "";
		//alert(dest.val());
		var dests = dest.val()
		for(var x = 0; x < dests.length; x++)
		{
			var vaTemp = dests[x];
			target.append("<option value='"+vaTemp+"'>"+vaTemp+"</option>");//追加
			target.find("option[value='"+vaTemp+"']").attr("selected",true);//给追加获取焦点
			for(var y = 0; y <childrens.length;y++ )//删除选中的元素
			{
				if(childrens.get(y).value==vaTemp)
					$(childrens.get(y)).remove();
			}
		}
		dest.val("");
	}
	function ShiftValue(address)
	{
		var right = $("select[name='right']");
		var left = $("select[name='left']");
		if(right.val()!=null)
			shift(right,address);
		else if(left.val()!=null)
			shift(left,address);
	}
	function shift(obj,address){
			//获取选中的值
			var objData = obj.val();
			var childrens = obj.children();
			var strs = "";
			for(var x = 0; x < objData.length; x++)
			{
				strs+="@"+objData[x];
			}

			//获取要添加位置对象
			var temp = null;
			if(address=="top"){
				var number = findSelect(childrens,objData[0]);
				if((--number) < 0)
					return;
				temp = childrens.get(number);
			}
			else{
				var number = findSelect(childrens,objData[objData.length-1]);
				if((++number) > childrens.length-1)
					return;
				temp = childrens.get(number);
			}

			//删除选中的值
			var n = 0;
			var buffer = new Array(childrens.length-objData.length);
			for(var x = 0; x < childrens.length;x++)
			{
				var value = childrens.get(x).value;
				if(strs.indexOf(value)==-1)
					buffer[n++] = value;
			}

			//添加新排序的值
			obj.empty();
			if(address=="top")
			{
				for(var y = 0; y < buffer.length;y++)
				{
					if(buffer[y]==temp.value)
					{
						for(var x = 0; x < objData.length ; x++)
						{
							obj.append("<option>"+objData[x]+"</option>");
						}
					}
					obj.append("<option>"+buffer[y]+"</option>");
				}
			}else{
				for(var y = 0; y < buffer.length;y++)
				{
					obj.append("<option>"+buffer[y]+"</option>");
					if(buffer[y]==temp.value)
					{
						for(var x = 0; x < objData.length; x++)
						{
							obj.append("<option>"+objData[x]+"</option>");
						}
					}
				}
			}
			//选中值
			obj.val(objData);
	}
	function findSelect(selects,objValue)
	{
		var number = -1;
		for(var x = 0; x < selects.length; x++)
		{
			if(objValue==selects.get(x).value)
				number = x;
		}
		return number;
	}

页面调用

<div>
		<div>
			<b>未导出字段</b>
		</div>
		<div style="float:left;">
			<select name="left" multiple="multiple" onchange="selected(this)" style="height:350px;width:200px;">
				<option value="姓名">姓名</option>
				<option value="快件号">快件号</option>
				<option value="快递公司">快递公司</option>
				<option value="首重">首重</option>
				<option value="续重">续重</option>
			</select>
		</div>
	</div>
	<div style="float:left;">
		<div style="margin:30px;margin-top:110px;"><input type="button" value="<<" onclick="Shift('left')"/></div>
		<div style="margin:30px;margin-top:30px;"><input type="button" value=">>" onclick="Shift('right')"/></div>
	</div>
	<div style="margin-top:-20px;">
		<div style="margin-left:22%;">
			<b>需导出字段</b>
		</div>
		<div style="float:left;">
			<select name="right" multiple="multiple" onchange="selected(this)" style="height:350px;width:200px;">
				<option value="首价">首价</option>
				<option value="续价">续价</option>
				<option value="大大">大大</option>
				<option value="小小">小小</option>
			</select>
		</div>
	</div>
	<div style="float:left;">
		<div style="margin:30px;margin-top:110px;"><input type="button" value="向上" onclick="ShiftValue('top')" /></div>
		<div style="margin:30px;margin-top:30px;"><input type="button" value="向下" onclick="ShiftValue('bottom')" /></div>
	</div>

jquery实现左右上下移动

时间: 2025-01-05 14:09:01

jquery实现左右上下移动的相关文章

基于jquery开发的UI框架整理分析

根据调查得知,现在市场中的UI框架差不多40个左右,不知大家都习惯性的用哪个框架,现在市场中有几款UI框架稍微的成熟一些,也是大家比较喜欢的一种UI框架,那应该是jQuery,有部分UI框架都是根据jQuery研发出来的产品,现在也很常见了. 国产jQuery UI框架 (jUI) DWZ DWZ富客户端框架(jQuery RIA framework), 是中国人自己开发的基于jQuery实现的Ajax RIA开源框架.设计目标是简单实用,快速开发,降低ajax开发成本. jQuery 部件布局

微信生成二维码 只需一个网址即刻 还有jquery生成二维码

<div class="orderDetails-info"> <img src="http://qr.topscan.com/api.php?text=http://123.net/index.php?s=/Home/Index/yanzheng/mai/{$dange.id}" style="width: 5rem; margin-bottom: 1rem;" > </div> http://qr.tops

Jquery基础总结

jquery获取元素索引值index()方法: jquery的index()方法 搜索匹配的元素,并返回相应元素的索引值,从0开始计数. 如果不给 .index() 方法传递参数,那么返回值就是这个jQuery对象集合中第一个元素相对于其同辈元素的位置. 如果参数是一组DOM元素或者jQuery对象,那么返回值就是传递的元素相对于原先集合的位置. 如果参数是一个选择器,那么返回值就是原先元素相对于选择器匹配元素中的位置.如果找不到匹配的元素,则返回-1. <ul> <li id=&quo

初识jQuery

jQuery简介 jQuery是一个快速.简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库(或JavaScript框架).jQuery设计的宗旨是"write Less,Do More",即倡导写更少的代码,做更多的事情.它封装JavaScript常用的功能代码,提供一种简便的JavaScript设计模式,优化HTML文档操作.事件处理.动画设计和Ajax交互. jQuery的核心特性可以总结为:具有独特的链式语法和短小清晰的多功能接口:

zepto与jquery冲突的解决

问题出现的背景: 在light7框架下搭建的触屏版项目中,要拓展一个投票系统,其中投票系统有一个比较完善的上传组件,但是此组件是依赖zepto的,而原来的项目是依赖jQuery的,所以就会遇到冲突的问题: 解决方法1: jquery有一个方法叫noConflict() ,可以把jquery的$改掉. var jq=$.noConflict(); 这个时候用jq来代替jquery的$吧. 解决方法2: zepto的符号改掉 window.zp=window.Zepto = Zepto 在zepto

jQuery父级以及同级元素查找的实例

父级以及同级元素的查找在使用过程中还是蛮频繁的,下面为大家介绍下jQuery是如何实现的,感兴趣的朋友可以参考下 jQuery.parent(expr) 找父亲节点,可以传入expr进行过滤,比如$("span").parent()或者$("span").parent(".class") jQuery.parents(expr),类似于jQuery.parents(expr),但是是查找所有祖先元素,不限于父元素 jQuery.children(

jQuery EasyUI---DataGrid

<html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>DataGrid</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <script src="../jquery-1.4.2.min.js" ty

jQuery学习(五)——使用JQ完成复选框的全选和全不选

1.在系统后台进行人员管理时,进行批量删除,使用jq完成全选和全不选 步骤分析: 第一步:引入jquery文件 第二步:书写页面加载函数 第三步:为上面的复选框绑定单击事件 第四步:将下面所有的复选框的选中状态设置成跟上面的一致! 2.具体代码实现: 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 <title>使用jQuery完成复选框的全选和全不

jQuery $.ajax传递数组的traditional参数传递必须true

出自:http://blog.csdn.net/ojackhao/article/details/24580437 起初我认为traditional:true,可有可无,但是后来不用traditional的时候,发现后台无法获取selectUsers的值,那么可以肯定的是traditional默认值是false.当提交的参数是数组( {selectUsers:[value,value,value]} ),如果是false的话,则提交时会是"selectUsers[]=value&sele

页面滚动图片等元素动态加载插件jquery.scrollLoading.js

如果一个网页很长,那么该页面的加载时间也会相应的较长.而这里给大家介绍的这个jQuery插件scrollLoading的作用则是,对页面元素进行动态加载,通俗的说就是滚到哪就加载到哪,屏幕以下看不见的就不用加载了.这样还可以在一定程度上节省服务器资源.该插件作者的网页将该插件的功能和使用方法描述的非常详细,这里把最一般最普遍的使用情况给大家展现一下. 插件作者:http://www.zhangxinxu.com/ 首先我们需要加载jQuery库和本插件js文件. (jquery.scrollLo