Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    Problema con select a cascata

    Ecco il mio problema:
    con questo script (trovato su questo forum) popolo la select "seconda" in base alla select "prima", tutto funziona perfettamente ma solo se le varie option sono tutte nella stessa quantità (es. 3 modelli alfa, 3 modelli audi, 3 modelli fiat).
    Dal momento che ogni opzione 1 ha differenti quantità di modelli, la seconda select mi mette prima tutti i modelli di appartenenza (corretti), ma poi me ne aggiunge altri per arrivare alla quantità massima di option esistenti.
    Non so se mi sono spiegata... Ad esempio con lo script che posto qui sotto, se seleziono alfa romeo, nella seconda tendina mi esce:
    145
    146
    147
    A4
    A5
    A6
    A7
    A8
    non sono una grande esperta di javascript aiuto!!!

    Ecco il codice:

    <html>

    <head>
    <script type="text/javascript">
    function dennis(selezionata){
    ar_AlfaRomeo=new Array();
    ar_Audi=new Array();
    ar_Fiat=new Array();

    ar_AlfaRomeo[0]=new Option('145','145');
    ar_AlfaRomeo[1]=new Option('146','146');
    ar_AlfaRomeo[2]=new Option('147','147');

    ar_Audi[0]=new Option('A1','A1');
    ar_Audi[1]=new Option('A2','A2');
    ar_Audi[2]=new Option('A3','A3');
    ar_Audi[3]=new Option('A4','A4');
    ar_Audi[4]=new Option('A5','A5');
    ar_Audi[5]=new Option('A6','A6');
    ar_Audi[6]=new Option('A7','A7');
    ar_Audi[7]=new Option('A8','A8');

    ar_Fiat[0]=new Option('500','500');
    ar_Fiat[1]=new Option('Brava','Brava');

    if(selezionata=="Alfa Romeo")array_rif=ar_AlfaRomeo;
    if(selezionata=="Audi")array_rif=ar_Audi;
    if(selezionata=="Fiat")array_rif=ar_Fiat;

    for(i=0;i<array_rif.length;i++)document.form1.seco nda.options[i]=array_rif[i];
    }
    </script>
    </head>
    <body>

    <form name="form1">

    <select name="prima" onChange="dennis(this[this.selectedIndex].value)">
    <option value="">Seleziona</option>
    <option value="Alfa Romeo">Alfa Romeo</option>
    <option value="Audi">Audi</option>
    <option value="Fiat">Fiat</option>
    </select>

    <select name="seconda">
    <option value="">Seleziona</option>
    </select>

    </form>

    </body>
    </html>

  2. #2
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230
    Non e' che lo script ti aggiunge modelli, sei tu che non li azzeri.
    Metti un document.form1.seconda.options.length=0; dove vuoi prima del ciclo for

  3. #3
    beh, perché ti conviene vuotare la seconda select prima di popolarla.

    Cambia la riga della for in:

    codice:
    var secondaSel = document.form1.seconda;
    
    while(secondaSel.options.length){
    	var opt = secondaSel.options[0];
    	secondaSel.removeChild(opt);
    	delete opt;
    }
    
    for(i=0;i<array_rif.length;i++)secondaSel.options[i]=array_rif[i];
    I DON'T Double Click!

  4. #4
    Grazie mille per la rapida soluzione!

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.