基于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移动和复制dom节点实用DOM操作案例
  • jQuery拖动div、移动div、弹出层实现原理及示例
  • 基于jquery的从一个页面跳转到另一个页面的指定位置的实现代码(带平滑移动的效果)
  • jQuery 移动端artEditor富文本编辑器
  • jQuery插件实现适用于移动端的地址选择器
  • jQuery操作dom实现弹出页面遮罩层(web端和移动端阻止遮罩层的滑动)
  • jquery实现移动端点击图片查看大图特效
  • jQuery移动web开发之页面跳转和加载外部页面的实现
  • jquery使用animate方法实现控制元素移动
  • jquery实现tr元素的上下移动示例代码
(0)

相关推荐

  • jquery实现移动端点击图片查看大图特效

    本文的需求很简单:点击图片查看大图,再点大图隐藏.多用于移动端,因为移动端屏幕小,可能需要查看大图. 具体实现代码 <!DOCTYPE html> <html> <meta charset="utf-8"/> <head runat="server"> <title>JQuery点击图片查看大图by starof</title> <style type="text/css&quo

  • jQuery 移动端artEditor富文本编辑器

    由于手机上打字比较慢,并不适合长篇大论的文章,所以移动端的富文本编辑器很少.artEditor是一款基于jQuery的移动端富文本编辑器,支持插入图片,后续完善其他功能. 插件地址:https://github.com/baixuexiyang/artEditor 欢迎star或fork. demo 引用: <script src="http://code.jquery.com/jquery-1.11.0.min.js"></script> <script

  • jquery使用animate方法实现控制元素移动

    本文实例讲述了jquery使用animate方法实现控制元素移动.分享给大家供大家参考.具体分析如下: 通过jquery的animate方法控制元素移动,这里需要将元素的位置定义为relative, fixed, 或者 absolute! <!DOCTYPE html> <html> <head> <script src="js/jquery.min.js"> </script> <script> $(docume

  • 基于jquery的从一个页面跳转到另一个页面的指定位置的实现代码(带平滑移动的效果)

    比如 想跳到 mao.aspx 的页面 的div id="s" 的位置 那么 只用<a href="mao.aspx#s"> 就可实现跳转到指定位置 现在为了增加用户体验 跳转到页面后 平滑移动到该位置 怎么做呢 其实也很简单啦 那边传递过来一个 要跳转到哪个div的参数就行 先上一段 页面获取参数的 通用js 复制代码 代码如下: //根据参数名获得该参数 pname等于想要的参数名 function getParam(pname) { var par

  • jQuery拖动div、移动div、弹出层实现原理及示例

    代码演示: http://www.imqing.com/demo/movediv.html 大概原理: 使div的position为绝对定位absolute,然后控制其top与left值,需要监听鼠标事件,主要用到mousedown, mousemove, mouseup. 在mousedown后,记录mousedown时鼠标与需要移动的div的位置,然后取得两者之差,得到在鼠标移动后,div的位置.即: left = 当前鼠标位置.x - (鼠标点击时的.x值 - div的初始位置x值) to

  • jquery实现tr元素的上下移动示例代码

    复制代码 代码如下: <html> <head> <title></title> <style type="text/css" > table { background:#949494; width:400px; line-height:20px;} td { border-right:1px solid gray; border-bottom:1px solid gray; } </style> <scri

  • jQuery移动web开发之页面跳转和加载外部页面的实现

    changePage() 页面跳转 jQuery.mobile.changePage( to [, options ] ) 从一个页面跳转到另一个页面,使用$.mobile对象的changePage方法来实现.但要使用此方式的时候,要以点击一个链接或者提交表单来实现.此方法有两个参数. to:是第一个参数,是必须的,不可缺少.类型:字符串或者对象. 字符串: 绝对或相对URL地址.如:("about/us.html") 对象: jquery选择器对象,如:($("#about

  • jQuery插件实现适用于移动端的地址选择器

    最近在工作中需要用到地址选择器,像下面这样的,本想在网上找一个,可是没找到,于是自己写了个jquery插件. 直接上代码吧: var provinces = { "A": { "安徽":["合肥市","芜湖市","蚌埠市","淮南市","马鞍山市","淮北市","铜陵市","安庆市","黄山市&qu

  • jQuery操作dom实现弹出页面遮罩层(web端和移动端阻止遮罩层的滑动)

    最近项目遇到了遮罩层的一些问题,总结一下: 弹出遮罩层 遮罩层弹出有非常多的方法,这里只写出本人用的代码,使用jq操作dom的方法进行实现的. <style>.box{position:absolute;width:100%;left:50%;height:auto;z-index:100;background-color:#f5f5f5;border:1px #ddd solid;padding:1px;}</style><div id="bg" v-c

  • jQuery移动和复制dom节点实用DOM操作案例

    本文章简单的介绍了关于jQuery移动和复制dom节点程序实现,有需要学习的朋友可参考参考. 在做一个项目时,需要dom节点移动,如以下代码: 复制代码 代码如下: <div></div> <p></p> 需要把p标签移动到div标签里,经过测试发现,在jQuery中移动dom节点非常方便: 复制代码 代码如下: $('div').append($('p')) 这样即可把p标签移动到div标签里,千万不要写成这样: 复制代码 代码如下: $('div').a

随机推荐