关于多个多选列表的数据移动问题..

hui_feng 2006-12-15 02:52:11
现在有多个多选择列表,想把里面从数据库读了出来的数据移动到指定的一个多选择列表里...如果选择到指定的列表里的数据不对,想移回之前移到这个列表里..请问如何实现呢?
...全文
369 24 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
侠雨飞飞 2007-01-22
  • 打赏
  • 举报
回复
Good
liaohaiying 2006-12-20
  • 打赏
  • 举报
回复
做好了,老兄,昨天我出去了,赚分真辛苦啊,快结贴吧
<SCRIPT LANGUAGE="JavaScript">
function move(tbox1) {
fbox=this.combo_box.list4;
var arrFbox = new Array();
var arrTbox = new Array();
var arrLookup = new Array();
var arrtitle = new Array();
var arrtitle1 = new Array();
var i;
for (i = 0; i < fbox.options.length; i++) {
arrLookup[fbox.options[i].text] = fbox.options[i].value;
arrtitle[i] = fbox.options[i].title;
//alert(arrtitle[i]);
arrTbox[i] = fbox.options[i].text;
}
var fLength = 0;
var tLength = arrTbox.length;
for(i = 0; i < tbox1.options.length; i++) {
arrLookup[tbox1.options[i].text] = tbox1.options[i].value;
//alert(tbox1.options[i].title);
if (tbox1.options[i].selected && tbox1.options[i].value != "") {
arrTbox[tLength] = tbox1.options[i].text;
arrtitle[tLength] = tbox1.options[i].title;
tLength++;
}
else {
arrFbox[fLength] = tbox1.options[i].text;
arrtitle1[fLength] = tbox1.options[i].title;
fLength++;
}
}
arrFbox.sort();
arrTbox.sort();
arrtitle.sort();
arrtitle1.sort();
fbox.length = 0;
tbox1.length = 0;
var c;
for(c = 0; c < arrFbox.length; c++) {
var no = new Option();
no.value = arrLookup[arrFbox[c]];
no.text = arrFbox[c];
no.title = arrtitle1[c];
tbox1[c] = no;
}
for(c = 0; c < arrTbox.length; c++) {
var no = new Option();
no.value = arrLookup[arrTbox[c]];
no.text = arrTbox[c];
no.title = arrtitle[c];
fbox[c] = no;
}
}

function move1() {
fbox=this.combo_box.list4;
var i;
arrtitle2length = 0;
var arrtitle2 = new Array();
var arrFbox = new Array();
var arrLookup = new Array();
var arrtitle = new Array();
var arrTbox1 = new Array();
var arrLookup1 = new Array();
var arrtitle11 = new Array();
var arrTbox2 = new Array();
var arrLookup2 = new Array();
var arrtitle12 = new Array();
var arrTbox3 = new Array();
var arrLookup3 = new Array();
var arrtitle13 = new Array();
for (i = 0; i < fbox.options.length; i++) {
//alert(fbox.options[i].title);
if (fbox.options[i].selected && fbox.options[i].value != "") {
arrtitle2[arrtitle2length] = fbox.options[i].title;
arrtitle2length++;
//alert(kkk);
}
}
tbox1=this.combo_box.list1;
tbox2=this.combo_box.list2;
tbox3=this.combo_box.list3;
for (i = 0; i < tbox1.options.length; i++) {
arrLookup1[i] = tbox1.options[i].value;
arrtitle11[i] = tbox1.options[i].title;
arrTbox1[i] = tbox1.options[i].text;
}
for (i = 0; i < tbox2.options.length; i++) {
arrLookup2[i] = tbox2.options[i].value;
arrtitle12[i] = tbox2.options[i].title;
arrTbox2[i] = tbox2.options[i].text;
}
for (i = 0; i < tbox3.options.length; i++) {
arrLookup3[i] = tbox3.options[i].value;
arrtitle13[i] = tbox3.options[i].title;
arrTbox3[i] = tbox3.options[i].text;
}
var fLength = 0;
var tLength1 = arrTbox1.length;
var tLength2 = arrTbox2.length;
var tLength3 = arrTbox3.length;
for(i = 0; i < fbox.options.length; i++) {
if (fbox.options[i].selected && fbox.options[i].value != "") {
if(fbox.options[i].title=="list1"){
arrLookup1[tLength1] = fbox.options[i].value;
arrTbox1[tLength1] = fbox.options[i].text;
arrtitle11[tLength1] = fbox.options[i].title;
tLength1++;}
if(fbox.options[i].title=="list2"){
arrLookup2[tLength2] = fbox.options[i].value;
arrTbox2[tLength2] = fbox.options[i].text;
arrtitle12[tLength2] = fbox.options[i].title;
tLength2++;}
if(fbox.options[i].title=="list3"){
arrLookup3[tLength3] = fbox.options[i].value;
arrTbox3[tLength3] = fbox.options[i].text;
arrtitle13[tLength3] = fbox.options[i].title;
tLength3++;}
}
else {
arrLookup[fLength] = fbox.options[i].value;
arrFbox[fLength] = fbox.options[i].text;
arrtitle[fLength] = fbox.options[i].title;
fLength++;
}
}
arrFbox.sort();
arrTbox1.sort();
arrTbox2.sort();
arrTbox3.sort();
arrtitle.sort();
arrtitle11.sort();
arrtitle12.sort();
arrtitle13.sort();
fbox.length = 0;
tbox1.length = 0;
var c;
for(c = 0; c < arrFbox.length; c++) {
var no = new Option();
no.value = arrLookup[c];
no.title = arrtitle[c];
no.text = arrFbox[c];
fbox[c] = no;
}
for(c = 0; c < arrTbox1.length; c++) {
var no = new Option();
no.value = arrLookup1[c];
no.title = arrtitle11[c];
no.text = arrTbox1[c];
tbox1[c] = no;
}
for(c = 0; c < arrTbox2.length; c++) {
var no = new Option();
no.value = arrLookup2[c];
no.title = arrtitle12[c];
no.text = arrTbox2[c];
tbox2[c] = no;
}
for(c = 0; c < arrTbox3.length; c++) {
var no = new Option();
no.value = arrLookup3[c];
no.title = arrtitle13[c];
no.text = arrTbox3[c];
tbox3[c] = no;
}
}
</script>
<form name="combo_box"><input value="ddddd" type="button" title="list1" onclick="alert(combo_box.list1.value.title);">
<table align="center">
<tr><td>
<select multiple size="5" name="list1" style="width:150" ondblclick="move(this)">
<option value="11" title="list1" onclick="if(this.focus()){this.blur();alert('1');}else{this.focus();alert('2');}">项目11</option>
<option value="12" title="list1" onclick="if(this.focus()){this.blur();alert('1');}else{this.focus();alert('2');}">项目12</option>
<option value="13" title="list1" onclick="if(this.focus()){this.blur();alert('1');}else{this.focus();alert('2');}">项目13</option>
<option value="14" title="list1" onclick="if(this.focus()){this.blur();alert('1');}else{this.focus();alert('2');}">项目14</option>
<option value="15" title="list1" onclick="if(this.focus()){this.blur();alert('1');}else{this.focus();alert('2');}">项目15</option>
</select><br>
<select multiple size="5" name="list2" style="width:150" ondblclick="move(this)">
<option value="1" title="list2">项目21</option>
<option value="2" title="list2">项目22</option>
<option value="3" title="list2">项目23</option>
<option value="4" title="list2">项目24</option>
<option value="5" title="list2">项目25</option>
</select><br>
<select multiple size="5" name="list3" style="width:150" ondblclick="move(this)">
<option value="1" title="list3">项目31</option>
<option value="2" title="list3">项目32</option>
<option value="3" title="list3">项目33</option>
<option value="4" title="list3">项目34</option>
<option value="5" title="list3">项目35</option>
</select>
</td>
<td align="center" valign="middle">
<input type="button" onClick="move(combo_box.list3);move(combo_box.list2);move(combo_box.list1);" value="to">
<input type="button" onClick="move1()" value="back">
</td>
<td>
<select multiple size="15" name="list4" style="width:150" ondblclick="move1()">
</select>
</td></tr></table>
</form>
hui_feng 2006-12-20
  • 打赏
  • 举报
回复
thankQ
For_suzhen 2006-12-18
  • 打赏
  • 举报
回复
只能备份一下了,用数组记忆下index,通过index先是那些被移除或被恢复的项。
lz 是不是这个意思

aaa
bbb TO->
ccc BACK<-
ddd

aaa
bbb TO->
ccc BACK<-
ddd
点击Back 时


aaa
bbb TO->
ccc BACK<-
ddd

hui_feng 2006-12-18
  • 打赏
  • 举报
回复
楼上的,不对啊.这个效果我早会了..我要的就是左边有三个选择框,右边只有一个,然后左边任意选择一个框里的内容添加会把数据传到右边,但右边要移除时就一定要移回到原来的框里才行...
liaohaiying 2006-12-18
  • 打赏
  • 举报
回复
试试这个,哈哈,结贴给我加分吧

<SCRIPT LANGUAGE="JavaScript">
function move(fbox, tbox) {
var arrFbox = new Array();
var arrTbox = new Array();
var arrLookup = new Array();
var i;
for (i = 0; i < tbox.options.length; i++) {
arrLookup[tbox.options[i].text] = tbox.options[i].value;
arrTbox[i] = tbox.options[i].text;
}
var fLength = 0;
var tLength = arrTbox.length;
for(i = 0; i < fbox.options.length; i++) {
arrLookup[fbox.options[i].text] = fbox.options[i].value;
if (fbox.options[i].selected && fbox.options[i].value != "") {
arrTbox[tLength] = fbox.options[i].text;
tLength++;
}
else {
arrFbox[fLength] = fbox.options[i].text;
fLength++;
}
}
arrFbox.sort();
arrTbox.sort();
fbox.length = 0;
tbox.length = 0;
var c;
for(c = 0; c < arrFbox.length; c++) {
var no = new Option();
no.value = arrLookup[arrFbox[c]];
no.text = arrFbox[c];
fbox[c] = no;
}
for(c = 0; c < arrTbox.length; c++) {
var no = new Option();
no.value = arrLookup[arrTbox[c]];
no.text = arrTbox[c];
tbox[c] = no;
}
}
</script>
<form name="combo_box">
<table align="center">
<tr><td>
<select multiple size="10" name="list1" style="width:150">
<option value="1">项目1</option>
<option value="2">项目2</option>
<option value="3">项目3</option>
<option value="4">项目4</option>
<option value="5">项目5</option>
</select>
</td>
<td align="center" valign="middle">
<input type="button" onClick="move(this.form.list2,this.form.list1)" value="<<">
<input type="button" onClick="move(this.form.list1,this.form.list2)" value=">>">
</td>
<td>
<select multiple size="10" name="list2" style="width:150">
</select>
</td></tr></table>
</form>
KITTY_chenming 2006-12-18
  • 打赏
  • 举报
回复
帮顶
希望你可以解决此问题
hui_feng 2006-12-18
  • 打赏
  • 举报
回复
实在太感谢liaohaiying(小菜),不过功能一定要用按钮,因为不用它实现不了相应的三个框同时把数据移到一个框里.
liaohaiying 2006-12-18
  • 打赏
  • 举报
回复
修正版本,绝对好用,前面那个会出问题,这个怎么搞都没问题了
<SCRIPT LANGUAGE="JavaScript">
function move(tbox1) {
fbox=this.combo_box.list4;
var arrFbox = new Array();
var arrTbox = new Array();
var arrLookup = new Array();
var arrtitle = new Array();
var arrtitle1 = new Array();
var i;
for (i = 0; i < fbox.options.length; i++) {
arrLookup[i] = fbox.options[i].value;
arrtitle[i] = fbox.options[i].title;
//alert(arrtitle[i]);
arrTbox[i] = fbox.options[i].text;
}
var fLength = 0;
var tLength = arrTbox.length;
for(i = 0; i < tbox1.options.length; i++) {
arrLookup[i] = tbox1.options[i].value;
//alert(tbox1.options[i].title);
if (tbox1.options[i].selected && tbox1.options[i].value != "") {
arrTbox[tLength] = tbox1.options[i].text;
arrtitle[tLength] = tbox1.options[i].title;
tLength++;
}
else {
arrFbox[fLength] = tbox1.options[i].text;
arrtitle1[fLength] = tbox1.options[i].title;
fLength++;
}
}
arrFbox.sort();
arrTbox.sort();
arrtitle.sort();
arrtitle1.sort();
fbox.length = 0;
tbox1.length = 0;
var c;
for(c = 0; c < arrFbox.length; c++) {
var no = new Option();
no.value = arrLookup[c];
no.text = arrFbox[c];
no.title = arrtitle1[c];
tbox1[c] = no;
}
for(c = 0; c < arrTbox.length; c++) {
var no = new Option();
no.value = arrLookup[c];
no.text = arrTbox[c];
no.title = arrtitle[c];
fbox[c] = no;
}
}

function move1() {
fbox=this.combo_box.list4;
var i;
var kkk;
for (i = 0; i < fbox.options.length; i++) {
//alert(fbox.options[i].title);
if (fbox.options[i].selected && fbox.options[i].value != "") {
kkk = fbox.options[i].title;
//alert(kkk);
}
}
if(kkk=="list1")
{
tbox1=this.combo_box.list1;
}
if(kkk=="list2")
{
tbox1=this.combo_box.list2;
}
if(kkk=="list3")
{
tbox1=this.combo_box.list3;
}
var arrFbox = new Array();
var arrTbox = new Array();
var arrLookup = new Array();
var arrtitle = new Array();
var arrtitle1 = new Array();
for (i = 0; i < tbox1.options.length; i++) {
arrLookup[i] = tbox1.options[i].value;
arrtitle1[i] = tbox1.options[i].title;
arrTbox[i] = tbox1.options[i].text;
}
var fLength = 0;
var tLength = arrTbox.length;
for(i = 0; i < fbox.options.length; i++) {
arrLookup[i] = fbox.options[i].value;
if (fbox.options[i].selected && fbox.options[i].value != "") {
arrTbox[tLength] = fbox.options[i].text;
arrtitle1[tLength] = fbox.options[i].title;
tLength++;
}
else {
arrFbox[fLength] = fbox.options[i].text;
arrtitle[fLength] = fbox.options[i].title;
fLength++;
}
}
arrFbox.sort();
arrTbox.sort();
arrtitle.sort();
arrtitle1.sort();
fbox.length = 0;
tbox1.length = 0;
var c;
for(c = 0; c < arrFbox.length; c++) {
var no = new Option();
no.value = arrLookup[c];
no.title = arrtitle[c];
no.text = arrFbox[c];
fbox[c] = no;
}
for(c = 0; c < arrTbox.length; c++) {
var no = new Option();
no.value = arrLookup[c];
no.title = arrtitle1[c];
no.text = arrTbox[c];
tbox1[c] = no;
}
}
</script>
<form name="combo_box">
<table align="center">
<tr><td>
<select multiple size="5" name="list1" style="width:150" ondblclick="move(this)">
<option value="11" title="list1">项目11</option>
<option value="12" title="list1">项目12</option>
<option value="13" title="list1">项目13</option>
<option value="14" title="list1">项目14</option>
<option value="15" title="list1">项目15</option>
</select><br>
<select multiple size="5" name="list2" style="width:150" ondblclick="move(this)">
<option value="21" title="list2">项目21</option>
<option value="22" title="list2">项目22</option>
<option value="23" title="list2">项目23</option>
<option value="24" title="list2">项目24</option>
<option value="25" title="list2">项目25</option>
</select><br>
<select multiple size="5" name="list3" style="width:150" ondblclick="move(this)">
<option value="31" title="list3">项目31</option>
<option value="32" title="list3">项目32</option>
<option value="33" title="list3">项目33</option>
<option value="34" title="list3">项目34</option>
<option value="35" title="list3">项目35</option>
</select>
</td>
<td align="center" valign="middle">双击选取
</td>
<td>
<select multiple size="15" name="list4" style="width:150" ondblclick="move1()">
</select>
</td></tr></table>
</form>
liaohaiying 2006-12-18
  • 打赏
  • 举报
回复
我可是牺牲了我的休息时间做的啊,调试的我好苦啊,我老婆还在一旁烦我,火死!
我是根据前面的例子改过来的,不过没有用按钮来选取了,因为用按钮会存在一个问题,这个问题留给楼主去发现吧
liaohaiying 2006-12-18
  • 打赏
  • 举报
回复
哈哈,我来了,试试看,行不,行就给我加分吧
<SCRIPT LANGUAGE="JavaScript">
function move(tbox1) {
fbox=this.combo_box.list4;
var arrFbox = new Array();
var arrTbox = new Array();
var arrLookup = new Array();
var arrtitle = new Array();
var arrtitle1 = new Array();
var i;
for (i = 0; i < fbox.options.length; i++) {
arrLookup[fbox.options[i].text] = fbox.options[i].value;
arrtitle[i] = fbox.options[i].title;
//alert(arrtitle[i]);
arrTbox[i] = fbox.options[i].text;
}
var fLength = 0;
var tLength = arrTbox.length;
for(i = 0; i < tbox1.options.length; i++) {
arrLookup[tbox1.options[i].text] = tbox1.options[i].value;
//alert(tbox1.options[i].title);
if (tbox1.options[i].selected && tbox1.options[i].value != "") {
arrTbox[tLength] = tbox1.options[i].text;
arrtitle[tLength] = tbox1.options[i].title;
tLength++;
}
else {
arrFbox[fLength] = tbox1.options[i].text;
arrtitle1[fLength] = tbox1.options[i].title;
fLength++;
}
}
arrFbox.sort();
arrTbox.sort();
fbox.length = 0;
tbox1.length = 0;
var c;
for(c = 0; c < arrFbox.length; c++) {
var no = new Option();
no.value = arrLookup[arrFbox[c]];
no.text = arrFbox[c];
no.title = arrtitle1[c];
tbox1[c] = no;
}
for(c = 0; c < arrTbox.length; c++) {
var no = new Option();
no.value = arrLookup[arrTbox[c]];
no.text = arrTbox[c];
no.title = arrtitle[c];
fbox[c] = no;
}
}

function move1() {
fbox=this.combo_box.list4;
var i;
var kkk;
for (i = 0; i < fbox.options.length; i++) {
//alert(fbox.options[i].title);
if (fbox.options[i].selected && fbox.options[i].value != "") {
kkk = fbox.options[i].title;
//alert(kkk);
}
}
if(kkk=="list1")
{
tbox1=this.combo_box.list1;
//alert("1");
}
if(kkk=="list2")
{
tbox1=this.combo_box.list2;
//alert("2");
}
if(kkk=="list3")
{
tbox1=this.combo_box.list3;
//alert("3");
}
var arrFbox = new Array();
var arrTbox = new Array();
var arrLookup = new Array();
var arrtitle = new Array();
var arrtitle1 = new Array();
for (i = 0; i < tbox1.options.length; i++) {
arrLookup[tbox1.options[i].text] = tbox1.options[i].value;
arrtitle1[i] = tbox1.options[i].title;
arrTbox[i] = tbox1.options[i].text;
}
var fLength = 0;
var tLength = arrTbox.length;
for(i = 0; i < fbox.options.length; i++) {
arrLookup[fbox.options[i].text] = fbox.options[i].value;
if (fbox.options[i].selected && fbox.options[i].value != "") {
arrTbox[tLength] = fbox.options[i].text;
arrtitle1[tLength] = fbox.options[i].title;
tLength++;
}
else {
arrFbox[fLength] = fbox.options[i].text;
arrtitle[fLength] = fbox.options[i].title;
fLength++;
}
}
arrFbox.sort();
arrTbox.sort();
fbox.length = 0;
tbox1.length = 0;
var c;
for(c = 0; c < arrFbox.length; c++) {
var no = new Option();
no.value = arrLookup[arrFbox[c]];
no.title = arrtitle[c];
no.text = arrFbox[c];
fbox[c] = no;
}
for(c = 0; c < arrTbox.length; c++) {
var no = new Option();
no.value = arrLookup[arrTbox[c]];
no.title = arrtitle1[c];
no.text = arrTbox[c];
tbox1[c] = no;
}
}
</script>
<table align="center">
<tr><td>
<select multiple size="5" name="list1" style="width:150" ondblclick="move(this)">
<option value="11" title="list1">项目11</option>
<option value="12" title="list1">项目12</option>
<option value="13" title="list1">项目13</option>
<option value="14" title="list1">项目14</option>
<option value="15" title="list1">项目15</option>
</select><br>
<select multiple size="5" name="list2" style="width:150" ondblclick="move(this)">
<option value="1" title="list2">项目21</option>
<option value="2" title="list2">项目22</option>
<option value="3" title="list2">项目23</option>
<option value="4" title="list2">项目24</option>
<option value="5" title="list2">项目25</option>
</select><br>
<select multiple size="5" name="list3" style="width:150" ondblclick="move(this)">
<option value="1" title="list3">项目31</option>
<option value="2" title="list3">项目32</option>
<option value="3" title="list3">项目33</option>
<option value="4" title="list3">项目34</option>
<option value="5" title="list3">项目35</option>
</select>
</td>
<td align="center" valign="middle">
双击选择
</td>
<td>
<select multiple size="15" name="list4" style="width:150" ondblclick="move1()">
</select>
</td></tr></table>
</form>
TaiNo 2006-12-18
  • 打赏
  • 举报
回复
哈哈,热闹,凑凑。
  • 打赏
  • 举报
回复
右边要移除时就一定要移回到原来的框里才行...
--------
在右边添加的时候,在VALUE里带上左边列表控件的名称作前缀区分即可。
hui_feng 2006-12-18
  • 打赏
  • 举报
回复
意思:

abc
bac
cca
dad

aaa
bff TO->
cdd BACK<-
dee


aaa
bsdf
cdff

当选择aaa时,按TO,就aaa直接过去右边..,当选择右边的aaa再按back,aaa就立即回到原来的位置.
liaohaiying 2006-12-18
  • 打赏
  • 举报
回复
你等一下,我给你做出来
syoumei 2006-12-16
  • 打赏
  • 举报
回复
循环一般的多选列表的时候

过滤下是否有“目标多选列表“的数据

结合yunxiang说的




jk88811 2006-12-15
  • 打赏
  • 举报
回复
好吧, 帮顶一个

DOM, 好, 正在学
hui_feng 2006-12-15
  • 打赏
  • 举报
回复
yunxiang,我想到了,在试着改进,还没行
andybogard,用DOM怎么实现呢?
我要求的说是一个
yi10000 2006-12-15
  • 打赏
  • 举报
回复
你在移之前对数据做个备份,当发现错误时,恢复就行了,这样就很简单了
andybogard 2006-12-15
  • 打赏
  • 举报
回复
可以用DOM来实现
加载更多回复(4)
本次更新内容较多,已有的组件新增了很多新的API,并且首次加入了移动端开发框架,可谓相当给力,新东西自然意味着更多的BUG即将诞生,我个人预计在未来的1~2个版本里会有不少BUG修复的更新内容,今后EasyUI定会发力移动开发方向,所以也算是一个好的开头,虽然目前东西还不是很全,但是基本的也都够用了,希望EasyUI今后会越来越好吧!由于现在工作过于繁忙所以本次API更新延后了快2周,抱歉了!老规矩,介绍一下本次更新内容吧!官方给的更新内容写的不全,我已经全部补全了。包括更新内容中写到的新增API,但是在API文档中没有给出的,在我的API当中全部都有(比官方网站上的还要全 :P) jQuery EasyUI 1.4.2版本更新内容: Bug(修复) treegrid:修复重建treegrid之后列会恢复原始大小的问题。 Improvement(改进) draggable:添加“delay”属性,允许用户延迟拖动操作; tree:添加“filter”属性和“doFilter”方法; tabs:“add”方法允许用户在指定的索引位上插入选项卡面板; tabs:用户可以决定哪些选项卡面板可以被选择; tabs:添加“justified”,“narrow”和“pill”属性; layout:添加“unsplit”和“split”方法; messager:支持键盘导航功能; form:添加“onChange”事件; combobox:添加“queryParams”属性; slider:添加“range”属性; menu:添加“itemHeight”,“inline”,“noline”和“align”属性; panel:添加“header”属性,允许用户自定义面板标题栏; menubutton:添加“hasDownArrow”属性。 New Plugin(新组件) datalist:该组件是展示列表数据的组件,用户可以对列表数据进行分组、单选、多选等各种操作; navpanel:该组件是移动端框架的根组件; mobile:filebox 该组件提供了移动页面堆栈管理和导航。

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧