Visualizzazione dei risultati da 1 a 6 su 6

Discussione: Problema con select

  1. #1

    Problema con select

    Sto realizzando una pagina nella quale ho dei campi select, sia singoli che a scelta multipla. Una volta selezionati i valori desiderati premendo un pulsante di tipo button genero un evento che mi inserisce altri select come i primi, il tutto senza generare il submit del form. Con IE tutto procede bene, mentre con gli altri browser (ho provato con Firefox e con Opera), i campi select precedenti perdono i loro valori selezionati. Esiste una soluzione?

  2. #2
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    come inserisci le nuove select?
    posta il codice (ridotto al minimo indispensabile) che usi al momento

  3. #3
    Scusa, mi sono sbagliato ed ho generato un nuovo messaggio

  4. #4
    Questa è la funzione che mi aggiunge il codice:

    function addpair(){
    var d=document.getElementById('c');
    d.innerHTML+="<table><tr><td><select name=s"+optscount+" id=s"+optscount+"><option value=''>Language 1</option><option value=''>----------</option></select></td><td><select name=dir"+optscount+"><option>=></option><option><=</option><option><=></option></select></td><td><select name=st"+optscount+" id=st"+optscount+"><option value=''>Language 2</option><option value=''>----------</option></select></td></tr><tr><td colspan=3> </td></tr></table>";
    oSelect=document.getElementById("s"+optscount);
    oSelect2 = document.getElementById("st"+optscount);
    for (i=0; i < lingua.length; i++){
    oSelect.options.add(new Option(lingua[i],lingua[i]));
    oSelect2.options.add(new Option(lingua[i],lingua[i]));
    }
    d.innerHTML += "<table><tr><td>Specializations</td><td><select size='10' multiple='multiple' name=spec"+optscount+" id=spec"+optscount+"></select><input type='hidden' id='hide'"+optscount+" /></td></tr><tr><td colspan=2></td></tr></table>";

    spec = document.getElementById("spec"+optscount);
    for(a=0;a<specialization.length;a++){
    spec.options.add(new Option(specialization[a],specialization[a]));
    }


    optscount+=1;
    }

    E questo è il codice html che interagisce con l'evento onclick:

    <div id="c"></div><input type="button" value="Add combination" onclick="addpair()" />

  5. #5
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    appunto, come sospettavo tu riscrivi l' innerHTML dell' elemento,
    a quel punto le selezioni fatte in precedenza si perdono perche' gli elementi del form vengono tutti scritti ex-novo

    quando scrivi
    elemento.innerHTML+='quello che vuoi aggiungere'
    e' come se scrivessi
    elemento.innerHTML=elemento.innerHTML+'quello che vuoi aggiungere'
    riscrivi quindi tutto il contenuto di elemento

    la soluzione e' creare e appendere gli elementi con gli opportuni metodi del DOM,
    vedi questo esempio http://forum.html.it/forum/showthrea...hreadid=848168
    ma non e' certo l' unico, approfondisci i fondamentali createElement e appendChild
    in una qualsiasi guida al DOM
    http://javascript.html.it/guide/leggi/24/guida-dom/
    ciao

  6. #6
    Ti ringrazio tantissimo. Ora mi vado a documentare.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.