2008-10-15 62 views
18

如何在ASP.NET中使用JavaScript將項目從一個列表框控件移動到另一個列表框控件?在雙重列表框中移動項目

+0

我正在刪除asp.net標記,因爲這實際上與asp.net沒有任何關係。 – 2009-04-13 17:38:09

+1

@balaweblog:您是否試圖使用ASP.NET ListBox控件作爲您想要將項目移入/移出的基礎?如果是這樣,ASP.NET標記是有效的,我會重新添加它,併發佈一個解決方案,這將有助於ASP.NET的事情。 – 2009-09-21 18:31:47

回答

6

此代碼假定你有一個錨或將觸發移動點擊時:

document.getElementById('moveTrigger').onclick = function() { 

    var listTwo = document.getElementById('secondList'); 
    var options = document.getElementById('firstList').getElementsByTagName('option'); 

    while(options.length != 0) { 
     listTwo.appendChild(options[0]); 
    } 

} 
32

如果你很樂意使用jQuery,它非常非常簡單。

$('#firstSelect option:selected').appendTo('#secondSelect'); 

其中#firstSelect是選擇框的ID。

我已經包含在這裏工作的例子:

http://jsbin.com/aluzu(編輯:http://jsbin.com/aluzu/edit

+0

我正在使用JavaScript可以請你在javascript中提供我 – balaweblog 2008-10-15 09:37:00

+1

你不應該在這裏使用remove()。它會刪除您可能擁有的任何事件處理程序。 $(「#firstSelect option:selected」)。appendTo(「#secondSelect」)將保留所有事件,並具有完全相同的效果。 – nickf 2008-10-15 13:50:06

6

庫無關的溶液:

function Move(inputControl) 
{ 
    var left = document.getElementById("Left"); 
    var right = document.getElementById("Right"); 
    var from, to; 
    var bAll = false; 
    switch (inputControl.value) 
    { 
    case '<<': 
    bAll = true; 
    // Fall through 
    case '<': 
    from = right; to = left; 
    break; 
    case '>>': 
    bAll = true; 
    // Fall through 
    case '>': 
    from = left; to = right; 
    break; 
    default: 
    alert("Check your HTML!"); 
    } 
    for (var i = from.length - 1; i >= 0; i--) 
    { 
    var o = from.options[i]; 
    if (bAll || o.selected) 
    { 
     from.remove(i); 
     try 
     { 
     to.add(o, null); // Standard method, fails in IE (6&7 at least) 
     } 
     catch (e) 
     { 
     to.add(o); // IE only 
     } 
    } 
    } 
} 

HTML

<select id="Left" multiple="multiple" size="10"> 
    <option>Some</option> 
    <option>List</option> 
    <option>Of</option> 
    <option>Items</option> 
    <option>To</option> 
    <option>Move</option> 
    <option>Around</option> 
</select> 

<div id="Toolbar"> 
    <input type="button" value="&gt;" onclick="Move(this)"/> 
    <input type="button" value="&gt;&gt;" onclick="Move(this)"/> 
    <input type="button" value="&lt;&lt;" onclick="Move(this)"/> 
    <input type="button" value="&lt;" onclick="Move(this)"/> 
</div> 

<select id="Right" multiple="multiple" size="10"> 
</select> 

CSS(實施例)

select { width: 200px; float: left; } 
#Toolbar { width: 50px; float: left; text-align: center; padding-top: 30px; } 
#Toolbar input { width: 40px; } 

快速測試FF3和IE6 & 7只。