2010-06-12 17 views
5

Ok, parece que hay un problema con el código JS para los navegadores Opera, ya que solo elimina la última etiqueta de opción seleccionada dentro de una etiqueta de selección múltiple, ¿alguien puede ayudarme? .Problema con la selección múltiple eliminación de más de 1 opción

Aquí está el código HTML para esto:

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

Por supuesto que es dentro de una etiqueta de formulario, pero hay un montón de código más involucrados con esta forma, pero aquí es la información relevante para esto.

Aquí está el JS que debería manejar esto, pero solo elimina la última opción seleccionada en Opera, no está seguro acerca de otros navegadores, pero realmente necesita eliminar todas las opciones seleccionadas, no solo la última opción seleccionada ... 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); 
    } 
} 

¿Qué pasa con esto? No puedo con ello un bit :(

Gracias :)

Respuesta

8

Es fácil de hacer esto con jQuery pero que deseas haz esto usando Javascript simple puedes.

El problema que experimenta es que cuando elimina un elemento de la lista de opciones en Opera, anula la selección de todos los elementos seleccionados, por lo que solo se elimina el primero. Una solución es primero recordar qué elementos se seleccionaron antes de eliminar alguno.

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

Gracias a un millón, nunca pensé en hacer eso. Esto realmente me estaba molestando muchísimo. ¿Por qué no pueden todos trabajar igual ... argg ... Bueno, esa es la gloria de la diversidad. Saludos :) Por cierto, no estoy muy familiarizado con jQuery, tan fácil como supuestamente es, pero creo que soy un tonto anticuado y prefiero JS. ¡Gracias de nuevo! :) – SoLoGHoST

5

Usted puede hacer mucho más fácil el uso de jQuery:

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

¿Es necesario incluir las bibliotecas para que esto funcione? Si es así, ¿cuál (es) necesito? – SoLoGHoST

+0

Ese código que publicó no funciona ... arggg – SoLoGHoST

+0

@SoLoGHoST - Funciona bien si solo descarga y usa jQuery. –

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

probar este lugar para eliminar la selección múltiple

0

Extracción de múltiples opciones de seleccione basándose en la condición:

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