Ciao a tutti,
avrei bisogno di valorizzare un select multipla da un'altra select multipla apportunamente riempita.
Ho modificato un funzione sposta() che ho trovato in giro perchč ho solo bisogno di valorizzare l'altra select e non toccare per niente i valori della prima.
Ecco lo script:
codice:
<!--
function sposta(form,direzione){
j=0;
if(direzione=='-->'){
partenza=form.categorie_disponibili;
arrivo=form.id_categoria;
}
else{
partenza=form.id_categoria;
arrivo=form.categorie_disponibili;
}
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]);
}
//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];
}
}
//-->
codice:
<select class="formText" name="categorie_disponibili" style="width: 300px; height: 150px" multiple>
<optgroup label="Professional">
<option value="1">Opzione 1</option>
<option value="2>Opzione 2/option>
</select>
<input type="button" value=" >> " onClick="sposta(this.form, '-->')" />
<input type="button" value=" << " onClick="sposta(this.form, '<--')"/>
<select name="id_categoria" class="formText" style="width: 300px; height: 150px" multiple>
<option value="36">ITALIANO -> opzione 3</option>
</select>
Il problema č che mi dā errore quando commento :
//partenza.options.length=0;
mi dice proprietā o metodi non supportati su questa riga:
arrivo.options[i]=sel[i];
}
ma non capisco perchč!?! Eppure io l'array arrivo non lo tocco per niente.. sono andato a cancellare solo il codice che modificava la SLEECT di partenza..
Qualcuno mi sā aiutare ?
Grazie 1000