2010-06-12 16 views
5

Tamam, birden çok seçim etiketinde seçili olan son seçenek etiketini kaldırdığı için, JS Code for Opera tarayıcılarında bir sorun var gibi görünüyor, birisi bana yardım edebilir . İşte Birden çok seçim kaldırılıyor seçeneği 1'den daha fazla seçeneği kaldırılıyor

bu HTML şudur: Bir form etiketi içinde bulunuyor Tabii

<select id="actions_list" name="layouts" multiple style="height: 128px; width: 300px;"> 
    <option value="forum">forum</option> 
    <option value="collapse">collapse</option> 
    <option value="[topic]">[topic]</option> 
    <option value="[board]">[board]</option> 
</select> 

, ancak bu form ile ilgili bir ton daha kod var, ama burada bunun için ilgili bilgilerdir.

İşte bu işlem gereken JS'dir, ancak Opera'da son seçilen seçeneği kaldırır, diğer tarayıcılar hakkında emin degil, ancak gerçekten seçilen seçeneklerin tümünü kaldırmanız gerekir, sadece en son seçilen seçenek ... argg

var action_list = document.getElementById("actions_list"); 
var i = action_list.options.length; 
while(i--) 
{ 
    if (action_list.options[i].selected) 
    { 
     action_list.remove(i); 
    } 
} 

Bunun nesi yanlış? Ben dışarı bilemiyorum tek bitlik :(

Teşekkür :) jQuery kullanılarak

cevap

8

O jQuery ile Bunu yapmanın en kolay ama o istediğiniz Bunu basit Javascript kullanarak yapabilirsiniz.

Karşılaştığınız sorun, Opera'daki seçenekler listesinden bir öğeyi kaldırdığınızda seçilen tüm öğelerin seçimini kaldırmasıdır, dolayısıyla yalnızca ilk kaldırılır. Bir çözüm, önce hangi öğelerin kaldırılmadan önce seçildiğini hatırlamaktır.

var action_list = document.getElementById("actions_list"); 

// Remember selected items. 
var is_selected = []; 
for (var i = 0; i < action_list.options.length; ++i) 
{ 
    is_selected[i] = action_list.options[i].selected; 
} 

// Remove selected items. 
i = action_list.options.length; 
while (i--) 
{ 
    if (is_selected[i]) 
    { 
     action_list.remove(i); 
    } 
} 
+0

Bir milyon teşekkürler, bunu asla düşünün. Bu gerçekten cehennemden bıkmıştı. Neden hepsi aynı şekilde çalışamıyorlar ... argg ... Peki, bu çeşitlilik şerefidir. Cheers :) Bytheway, jQuery ile çok aşina değilim, iddia edildiği kadar kolay, ama sanırım sadece eski moda bir aptalı ve JS tercih ediyorum. Tekrar teşekkürler! :) – SoLoGHoST

5
Bunu çok daha kolay yapabilir

:

$('#actions_list option:selected').remove() 
+0

Ben işe yaraması için kütüphaneleri dahil etmek gerekiyor mu? Eğer öyleyse, hangisine ihtiyacım var? – SoLoGHoST

+0

Gönderdiğiniz kod çalışmıyor ... arggg – SoLoGHoST

+0

@SoLoGHoST - Sadece jQuery'yi indirip kullanırsanız iyi çalışır. –

0
$.each($('[name="alltags"] option:selected'), function(index, value) { 
    $(this).remove(); 
}); 

durumuna göre seçme birden fazla seçenek Çıkarma çoklu seçim

0

kaldırmak için şunu yapmayı deneyin:

while(SelectBox.length > 1){ 
    if(SelectBox[SelectBox.length -1].text != "YourCondition"){ 
     SelectBox.remove(SelectBox.length -1); 
    } 
} 
İlgili konular