Hombre si, obviamente mi script es unicamente experimental; una prueba de cómo ordenar un select.
Ahora debes unirlos no "a lo bestia", si no utilizando la cabeza.
Yo crearia una funcion de ordenacion, y cada vez que sea pulsado el boton de mover, que se ordene el select destino (receptor). El codigo completo de la aplicacion seria este:
Código PHP:
<script type="text/javascript">
function ordenarSelect(elSelect) {
items=document.getElementById(elSelect).options; // los originales
opciones=new Array(); // sera un doble array: con el texto, y con el valor
//ordenaremos 'opciones', despues sobrescribiremos todas las opciones originales con 'opciones' que ya estaran ordenadas
//rellenamos 'opciones'
for(a=0;a<items.length;a++)
opciones[a]=new Array( items[a].text, items[a].value);
opciones.sort(); // ordenamos 'opciones'. Se ordenara alfabeticamente opciones[0], y los cambios seran efectivos tambien para opciones[1]
for(a=0;a<items.length;a++) { //sobrescribimos las opciones originales a las ordenadas
items[a].text=opciones[a][0];
items[a].value=opciones[a][1];
}
}
function volcarSelects(emisor, receptor){
// Accedemos a los 2 selects
emisor = document.getElementById(emisor);
receptor = document.getElementById(receptor);
// Obtenemos algunos datos necesarios
posicion = receptor.options.length;
selecionado = emisor.selectedIndex;
if(selecionado != -1) {
volcado = emisor.options[selecionado];
// Volcamos la opcion al select receptor y lo eliminamos del emisor
receptor.options[posicion] = new Option(volcado.text, volcado.value);
emisor.options[selecionado] = null;
}
ordenarSelect(receptor.id);
}
</script>
<select id="primero" style="width: 200px; height: 100px;" name="primero" multiple="multiple">
<option value="1">Noticias</option>
<option value="2">Inmuebles</option>
<option value="3">Herramientas</option>
<option value="4">Correos</option>
<option value="5">Usuarios</option>
<option value="6">Configuración</option>
</select>
<!-- Fijaros que a la funcion le paso el ID del select que envia y el segundo parametro es el ID que recibe -->
<input type="button" value="→" onclick="volcarSelects('primero', 'segundo');" />
<!-- En este caso quiero poder "quitar" opciones, por lo que invierto el orden de los parametros pasados a la función -->
<input type="button" value="←" onclick="volcarSelects('segundo', 'primero');" />
<select style="width: 200px; height: 100px;" id="segundo" name="segundo" multiple="multiple">
</select>
Creo que es lo que buscas, si no siempre se puede retocar