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" οnchange="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="<<" οnclick="Shift('left')"/></div>
		<div style="margin:30px;margin-top:30px;"><input type="button" value=">>" οnclick="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" οnchange="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="向上" οnclick="ShiftValue('top')" /></div>
		<div style="margin:30px;margin-top:30px;"><input type="button" value="向下" οnclick="ShiftValue('bottom')" /></div>
	</div>

發佈了56 篇原創文章 · 獲贊 16 · 訪問量 20萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章