2008-10-15 4 views
18

Öğeleri bir liste kutusu denetiminden ASP.NET'te JavaScript kullanarak başka bir liste kutusu denetimine nasıl taşıyabilirim?Çift Liste Kutusunda öğeleri taşıma

+0

asp.net etiketini kaldırıyorum çünkü gerçekten asp.net ile ilgisi yok. –

+1

@balaweblog: ASP.NET ListBox denetimini, öğeleri içeri/dışarı taşımak istediğiniz tablonuz olarak kullanmaya çalışıyor musunuz? Öyleyse, ASP.NET etiketi geçerli ve ben yeniden ekleyeceğim ve şeylerin ASP.NET tarafında yardımcı olacak bir çözüm göndereceğim. –

cevap

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]); 
    } 

} 
+0

Bunun, onu taşıdığınız listeden kaldırılacağını düşünmüyorum. –

+0

@nemo Deneyin ve gör. İyi çalışıyor. AppendChild() işlevi, seçeneği geçerli üst öğesinden kaldırır ve belirtilen öğeye taşır; Aksi takdirde, DOM'daki düğümü çoğaltırsınız. – Tom

+2

@nemo Sorun değil! Benim düşünceme göre, her zaman bilmek güzeldir * nasıl * bir şey yerine çalışır * sadece * çalışır. – Tom

32

jQuery'yi kullanmaktan memnunsanız çok basittir.

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

#firstSelect, seçim kutusunun kimliğidir.

Burada bir çalışma örneğini de bulabilirsiniz

:

http://jsbin.com/aluzu

(düzenlemek için: http://jsbin.com/aluzu/edit) Bu kod tıklandığında bir çapa sahip veya bu harekete tetikleyecektir varsayar

+0

javascript kullanıyorum lütfen javascriptte bana bildirebilir misiniz – balaweblog

+1

Burada remove() kullanmamalısınız. Sahip olabileceğiniz etkinlik işleyicilerini siler. $ ("# firstSelect seçeneği: selected") appendTo ("# secondSelect") herhangi bir olayı koruyacak ve aynı etkiye sahip olacaktır. – nickf

+1

@balaweblog: Bu javascript – user9991

6

bir kütüphane bağımsız çözeltisi:

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 (örnek)

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

Hızlı Test FF3 ve IE6 & 7 sadece.

+0

Bu çözüm benim için ASP.NET'te çalışmadı çünkü kendi ViewState (daha önce seçilen değerler) iletileri arasında işlemek için denetimlere ihtiyacım vardı, ancak seçim listelerinin basit HTML/Javascript manipülasyonu için gerçekten işe yaradı. –