2010-06-12 8 views
5

Ok, es scheint ein Problem mit dem JS-Code für Opera-Browser zu geben, da nur das letzte Options-Tag innerhalb eines Mehrfachauswahl-Tags entfernt wird. Kann mir bitte jemand helfen . HierProblem mit Mehrfachauswahl Entfernen von mehr als 1 Option

ist der HTML-Code für diesen:

<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> 

Ofcourse es in einem Formular-Tag, aber es gibt eine Tonne mehr Code mit dieser Form beteiligt, aber hier sind die relevanten Informationen für diese.

Hier ist die JS, die das handhaben sollte, aber nur die letzte ausgewählte Option in Opera entfernt, nicht sicher über andere Browser, aber es muss wirklich alle ausgewählten Optionen entfernen, nicht nur die zuletzt ausgewählte Option ... 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); 
    } 
} 

Was ist daran falsch? Ich kann es nicht herausgefunden ein Bit :(

Thanks :)

Antwort

8

Es ist am einfachsten dies mit jQuery zu tun, aber es Sie wollen Mach das mit einfachem Javascript, das kannst du.

Das Problem besteht darin, dass beim Entfernen eines Elements aus der Optionsliste in Opera alle ausgewählten Elemente abgewählt werden, sodass nur das erste Objekt entfernt wird. Eine Problemumgehung besteht darin, sich zuerst daran zu erinnern, welche Elemente ausgewählt wurden, bevor sie entfernt wurden.

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

Danke eine Million, nie gedacht, das zu tun. Das nervte mich wirklich sehr. Warum können sie nicht alle gleich funktionieren ... argg ... Nun, das ist der Ruhm der Vielfalt. Cheers :) Bywayway, ich bin nicht sehr vertraut mit jQuery, so einfach wie es angeblich ist, aber ich denke, ich bin nur ein altmodischer Idiot und bevorzuge JS. Danke noch einmal! :) – SoLoGHoST

5

Sie tun können, es viel einfacher, mit jQuery:

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

Muss ich sind Bibliotheken für diese zu arbeiten? Wenn ja, welche brauche ich? – SoLoGHoST

+0

Dieser Code, den Sie gepostet haben, funktioniert nicht ... arggg – SoLoGHoST

+0

@SoLoGHoST - Es funktioniert gut, wenn Sie nur jQuery herunterladen und verwenden. –

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

dies versuchen stattdessen mehrere Auswahl

0

Entfernen mehrere Optionen wählen, basierend auf Zustand zu entfernen:

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