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:
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:<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>
Sapete illuminarmi?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>
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