Hola ¡¡
Tengo un select múltiple en el cual tengo cuatro botones:
Añadir un elemento, borrar un elemento, añadir todos los elementos y borrar todos los elementos.
El de añadir todos y borrar todos es este:
Código:
function anadirTodos(val) {
var newOpt
for (k=0;k<val.lista.length;k++) {
newOpt = document.createElement("OPTION");
newOpt.text = val.lista.options[k].text;
newOpt.value = val.lista.options[k].value;
val.seleccionados.options.add(newOpt,val.seleccionados.length);
//val.lista.options.remove(k);
}
for (k=0;k<val.lista.length;) {
val.lista.options.remove(k);
}
}
function eliminarTodos(val) {
var newOpt
for (k=0;k<val.seleccionados.length;k++) {
newOpt = document.createElement("OPTION");
newOpt.text = val.seleccionados.options[k].text;
newOpt.value = val.seleccionados.options[k].value;
val.lista.options.add(newOpt,val.lista.length);
//val.lista.options.remove(k);
}
for (k=0;k<val.seleccionados.length;) {
val.seleccionados.options.remove(k);
}
}
El problema que tengo es que en el internet explorer funcionan sin problemas, pero en el firefox en vez de moverlos, lo que hace es copiarlos, osea si por ejemplo en lista1 tengo los valores:1,2,3 y 4 y le pulso al botón pasar todos, me pasa a lista2 los valores:1,2,3 y 4, pero no los quita de lista1, en cambio en internet explorer si lo hace correctamente.
También me ocurre que cuando añado un registro individualmente y luego lo quito, vuelve a la lista principal desordenado:
Este es el código:
Código:
function anadir() {
obj=document.getElementById('lista');
if (obj.selectedIndex==-1) return;
valor=obj.value;
txt=obj.options[obj.selectedIndex].text;
obj.options[obj.selectedIndex]=null;
obj2=document.getElementById('seleccionados');
opc = new Option(txt,valor);
eval(obj2.options[obj2.options.length]=opc);
}
function eliminar() {
obj=document.getElementById('seleccionados');
if (obj.selectedIndex==-1) return;
valor=obj.value;
txt=obj.options[obj.selectedIndex].text;
obj.options[obj.selectedIndex]=null;
obj2=document.getElementById('lista');
opc = new Option(txt,valor);
eval(obj2.options[obj2.options.length]=opc);
}
¿Cómo puedo hacer que vuelva el registro a la lista ordenado alfabéticamente como lo tenía en un principio?
Alguien puede hecharme una mano???
Un saludo ¡¡