两个select之间option的互相添加操作(jquery实现)

2016-02-19 14:38 18 1 收藏

图老师设计创意栏目是一个分享最好最实用的教程的社区,我们拥有最用心的各种教程,今天就给大家分享两个select之间option的互相添加操作(jquery实现)的教程,热爱PS的朋友们快点看过来吧!

【 tulaoshi.com - Web开发 】

打包下载

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)

自己写了一个很简单的jquery插件,在页面中调用其中的函数就可实现.
插件源代码(listtolist.js):

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)代码如下:
/**
fromid:源list的id.
toid:目标list的id.
moveOrAppend参数("move"或者是"append"):
move -- 源list中选中的option会删除.源list中选中的option移动到目标list中,若目标list中已存在则该option不添加.
append -- 源list中选中的option不会删除.源list中选中的option添加到目标list的后面,若目标list中已存在则该option不添加.

isAll参数(true或者false):是否全部移动或添加
*/
jQuery.listTolist = function(fromid,toid,moveOrAppend,isAll) {
if(moveOrAppend.toLowerCase() == "move") { //移动
if(isAll == true) { //全部移动
$("#"+fromid+" option").each(function() {
//将源list中的option添加到目标list,当目标list中已有该option时不做任何操作.
$(this).appendTo($("#"+toid+":not(:has(option[value="+$(this).val()+"]))"));
});
$("#"+fromid).empty(); //清空源list
}
else if(isAll == false) {
$("#"+fromid+" option:selected").each(function() {
//将源list中的option添加到目标list,当目标list中已有该option时不做任何操作.
$(this).appendTo($("#"+toid+":not(:has(option[value="+$(this).val()+"]))"));
//目标list中已经存在的option并没有移动,仍旧在源list中,将其清空.
if($("#"+fromid+" option[value="+$(this).val()+"]").length 0) {
$("#"+fromid).get(0)
.removeChild($("#"+fromid+" option[value="+$(this).val()+"]").get(0));
}
});
}
}
else if(moveOrAppend.toLowerCase() == "append") {
if(isAll == true) {
$("#"+fromid+" option").each(function() {
$("option/option")
.val($(this).val())
.text($(this).text())
.appendTo($("#"+toid+":not(:has(option[value="+$(this).val()+"]))"));
});
}
else if(isAll == false) {
$("#"+fromid+" option:selected").each(function() {
$("option/option")
.val($(this).val())
.text($(this).text())
.appendTo($("#"+toid+":not(:has(option[value="+$(this).val()+"]))"));
});
}
}
};
/**
功能大体同上("move").
不同之处在于当源list中的选中option在目标list中存在时,源list中的option不会删除.

isAll参数(true或者false):是否全部移动或添加
*/
jQuery.list2list = function(fromid,toid,isAll) {
if(isAll == true) {
$("#"+fromid+" option").each(function() {
$(this).appendTo($("#"+toid+":not(:has(option[value="+$(this).val()+"]))"));
});
}
else if(isAll == false) {
$("#"+fromid+" option:selected").each(function() {
$(this).appendTo($("#"+toid+":not(:has(option[value="+$(this).val()+"]))"));
});
}
};

来源:http://www.tulaoshi.com/n/20160219/1607401.html

延伸阅读
标签: Web开发
原本效果 拖拽之后效果 代码如下 代码如下: [code] !DOCTYPE HTML html head style type="text/css" #div1, #div2 {float:left; width:100px; height:35px; margin:10px;padding:10px;border:1px solid #aaaaaa;} /style script type="text/javascript" function allowDrop(ev) { ev.preventDefault(); } function drag(ev) {...
标签: Delphi
  Form中的Select控件不支持对选择项(Option)的排序,下面我将对Option中value属性值进行排序,并调整每个Option排序后的位置,具体代码如下(这里假设每个Option中的value与其中的text内容相同):   该函数运用了Array(数组)对象的排序(sort)方法,实现了Select排序。 function sortMe(oSel){ var ln = oSel.options.le...
标签: Web开发
今天休完年假从家回来后,看到小林在QQ发的“监控管理示范代码”,核心原理用的是select元素的 add() 方法: 代码如下: function watch_ini(){ // 初始  for(var i=0; iarguments.length; i++){  var word = document.createElement("OPTION");  word.text =...
标签: Web开发
页面中有一个select元素,id为customer,在网上好多的介绍jquery引用select的选中值的方法都是用: 代码如下: $("#customer option[selected]").val(); 这个方法来得到selcte选中项的值。我也是一直是这么用,不过最近安装了FF3.5正式版,发现这种方法在它下面得不到值,就去看jquery的帮助文档,在文档中对select选中的引用是用如下方法...
标签: Web开发
基于jQuery JavaScript Library v1.3.2 的单选模拟 (本文件是跟据 zhangjingwei 的Jquery Select(单选) 模拟插件 V1.3.4 修改而来的) a. 修改的主要原因是,原来的zhangjingwei的模拟在显示方式上的问题。在跟文字交替出现时会出现错位。现将模拟DIV的display修改为inline方式。更自然的嵌入到文本行中。 b.在加载文件后自动转化样式名为'com...

经验教程

913

收藏

23
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部