Salve a tutti,
ho recuperato un codice nella sezione pillole postato da un utente.
Lo script è semplice e carino, sposta gli elementi da una select multipla all'altra, per provarlo copiate e incollate il codice, funziona perfettamente:

<script>
// Due argomenti, sono due frecce, o --> o <--
function sposta(direzione){
j=0;
form=document.form1
if(direzione=='-->'){
partenza=form.prima
arrivo=form.seconda
}
else{
partenza=form.seconda
arrivo=form.prima
}

non_sel=new Array()
sel=new Array()
//per ogni opzione di partenza controlla:
for(i=0;i<partenza.options.length;i++){
//se è selezionata, mettila nell'array sel
if(partenza.options[i].selected){
partenza.options[i].selected=false
sel.push(partenza.options[i])
}
//altrimenti non è selezionata, quindi mettila nell'array non_sel
else{
non_sel.push(partenza.options[i])
}
}
//per ogni opzione di arrivo
for(i=0;i<arrivo.options.length;i++){
//aggiungi all'array sel tutti i valori di arrivo
sel.push(arrivo.options[i])
}
function sorting(a,b){
if(a.text<b.text)return -1
if(a.text>b.text)return 1
else return 0
}
sel.sort(sorting)
non_sel.sort(sorting)
//azzera le due select
partenza.options.length=0;
arrivo.options.length=0;
//Per ogni valore in non_sel
for(i=0;i<non_sel.length;i++){
//scrivilo in partenza
partenza.options[i]=non_sel[i]
}
//Per ogni valore in sel
for(i=0;i<sel.length;i++){
//scrivilo in arrivo
arrivo.options[i]=sel[i]
}
}
</script>

<form name="form1">
<select name="prima" multiple size=7>
<option name="a">a</option>
<option name="c">c</option>
<option name="b">b</option>
</select>
<input type="button" value=">>" onClick="sposta('-->')" ><input type="button" value="<<" onClick="sposta('<--')" >
<select name="seconda" multiple size=7>
<option name="d">d</option>
<option name="e">e</option>
</select>
Io sto cercando di personalizzarlo in modo che la prima select resta invariata e la seconda acquisisce i valori selezionati nella prima, ma deve esserci qualcosa che non so sulle select multiple perchè si blocca in un ciclo anche se non dovrebbe:

codice:
<script> 
// Due argomenti, sono due frecce, o --> o  <-- 
function sposta(){ 
    j=0; 
    form=document.form1 
        partenza=form.prima 
        arrivo=form.seconda 
    non_sel=new Array() 
    sel=new Array() 
    //per ogni opzione di partenza controlla:  
    for(i=0;i<partenza.options.length;i++){ 
        //se è selezionata, mettila nell'array sel 
        if(partenza.options[i].selected){ 
            partenza.options[i].selected=false 
            sel.push(partenza.options[i]) 
        } 
        //altrimenti non è selezionata, quindi mettila nell'array non_sel 
        else{ 
            non_sel.push(partenza.options[i]) 
        } 
    } 
    //per ogni opzione di arrivo 
    for(i=0;i<arrivo.options.length;i++){ 
        //aggiungi all'array sel tutti i valori di arrivo 
        sel.push(arrivo.options[i]) 
    } 
    function sorting(a,b){ 
        if(a.text<b.text)return -1 
        if(a.text>b.text)return 1 
        else return 0 
    } 
    sel.sort(sorting) 
    non_sel.sort(sorting) 
    //azzera le due select 
    arrivo.options.length=0; 
    //Per ogni valore in non_sel 
    //Per ogni valore in sel 
    for(i=0;i<sel.length;i++){ 
        //scrivilo in arrivo 
        arrivo.options[i]=sel[i]  //e qui si blocca
    } 
}             
</script> 

<form name="form1"> 
<select name="prima" multiple size=7> 
<option name="a">a</option> 
<option name="c">c</option> 
<option name="b">b</option> 
</select> 
<input type="button" value=">>" onClick="sposta()" >
<select name="seconda" multiple size=7> 
</select>
Sapete illuminarmi?
So che potrei usare una text area invece della seconda select, ma vorrei fare altre modifiche per cui preferisco che sia una select anche la seconda.
Grazie Angelo