Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2000
    Messaggi
    70

    creare optgroup in un select dinamicamente

    salve a tutti,
    vorrei creare degli optgroup dinamicamente in un select ed inserire all'interno i suoi option del tipo
    <form name=DATI>
    <select name="mioselect">
    <optgroup label="lettera A">
    <option value="">Andrea</option>
    <option value="">Adriano</option>
    <option value="">Annalisa</option>
    </optgroup>
    <optgroup label="Lettera B">
    <option value="">Barbara</option>
    <option value="">Bruno</option>
    </optgroup>
    </select>

    se dovevo creare solo gli option utilizzo :
    ***************************************
    obj = document.DATI.mioselect;
    var opt = document.createElement("option");
    opt.text = "Andrea";
    opt.value = "";
    obj.options[obj.length] = opt;
    ***************************************

    Ho provato anche con 'var opt = document.createElement("optgroup");'
    e successivamente creo gli option ma mi crea solo il primo optgroup. Tutto il resto viene inserito unicamente all'interno di esso.
    Qual metodo devo usare per crearne piu' di uno?
    Grazie

  2. #2
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    ciao Kendom
    mi sa che puoi risolvere solo ricorrendo ad un uso massiccio degli strumenti messi a disposizione dal DOM moderno
    nell' esempio che hai postato invece procedi in maniera mista:
    crei l' elemento (option) con createElement, per poi appenderlo alla select in maniera "classica"

    x capirci, in maniera classica potresti scrivere direttamente
    obj.options[obj.length] = new Option('testo option','valore option')

    ma puoi farlo perchè l' oggetto option ha nativamente un suo costruttore
    mentre un optgroup non ce l' ha

    un esempio veloce con i metodi del DOM moderno (il cui supporto da parte del browser in uso andrebbe cmq testato)
    codice:
    function aggiungi(lettera,nome){
    	var gruppo=document.createElement('optgroup');
    	gruppo.setAttribute('label','lettera '+lettera);
    	var opzione=document.createElement('option');
    	var testo=document.createTextNode(nome);
    	opzione.appendChild(testo);
    	// opzione.setAttribute('value','eventuale_valore_option');
    	gruppo.appendChild(opzione);
    	document.DATI.mioselect.appendChild(gruppo);
    }
    ...
    <input type="button" value='aggiungi c' onclick="aggiungi('C','Carolina')" />
    <input type="button" value='aggiungi d' onclick="aggiungi('D','Daniele')" />
    x altre operazioni puoi usare i metodi discussi in questa pagina
    cmq prima di procedere è consigliabile un approfondimento a tutto il DOM moderno

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2000
    Messaggi
    70
    Ho trovato questa soluzione:
    obj = document.DATI.PROVA;

    var optg = document.createElement("optgroup");
    optg.label = "Lunedi";
    obj.appendChild(optg);

    var opt = new Option();
    opt.value = " VALORE ";
    opt.innerText = " TESTO";
    optg.appendChild(opt);

    ... ho solo un problema. Devo passare questo script da una pagina esterna quindi richiamo

    obj = parent.PAGINA.document.DATI.PROVA;
    mi ritorna un errore "Argomento non valido".
    come mai? ciao e grazie

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2000
    Messaggi
    70
    Ho risolto.
    devo inserire
    var optg = parent.PAGINA.document.createElement("optgroup");

    naturalmente PAGINA e' il nome del frame.
    Grazie per la tua disponibilita'

  5. #5
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    di nulla,
    se posso ti sconsiglio di usare innerText, ha una compatibilità molto limitata

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.