Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2011
    Messaggi
    20

    Consiglio su modifica HTML dopo evento select.onchange

    Buonasera a tutti.
    Scrivo per chiedere un consiglio per la realizzazione di una pagina web dinamica tramite i js.
    In pratica ho una form a cui devo aggiungere elementi a seconda delle azioni che eseguo su quelli già esistenti. Passo all'esempio pratico.

    Questa è la mia form
    codice HTML:
    <form method="GET" action="pages/risultati.php" autocomplete="off">
       <table>
          <tr>
             <td><label for="action">Action:</label></td>
             <td>
                 <select id="action" name="action" onchange="ActionSelect_OnChange();">
                     <option value="primo">Primo</option>
                     <option value="secondo">Secondo</option>
                     <option value="terzo">Terzo</option>
                     <option value="quarto">Quarto</option>
                 </select>
              </td>
           </tr>
       </table>
       <input id="submitButton" type="submit" value="INVIA" />
    </form>
    Voglio che al verificarsi di onchange della select "action" nella mia form vengano aggiunti altri controlli. Ho alcune idee su come farlo, ho aperto la discussione per sapere quali di esse, o di altre adottabili, sarebbe la migliore per la mia esigenza. Con migliore intendo in ambito di performance, di leggibilità, di validità, insomma, la più corretta.
    Ho pensato

    - Di modificare l'innerHTML della table aggiungendo ciò che mi serve aggiungere. Il problema è che così facendo, a ogni onchange, la pagina html aggiungerebbe tutti i blocchi di codice in sequenza senza cancellare quelli aggiunti in precedenza. In questo caso dovrei salvare in una variabile la parte 'statica' del codice e ogni volta aggiungerci la parte desiderata. Questo, a parte sembrarmi poco appropriato perchè dovrei modificare ad ogni onchange tutto il contenuto della table, porterebbe a dei problemi aggiuntivi siccome anche i blocchi di codice che aggiungo potrebbero contenere controlli sensibili all'onchange, e quindi altri blocchi di codice da aggiungere.

    - Di inserire un elemento "hidden", ovvero con padding:0, margin:0, e vuoto dopo la <tr> relativa al <select> come nuova riga della tabella, a cui cambiare l'innerHTML senza cambiarlo a tutta la <table>, ma questo significa che l'elemento hidden dovrebbe essere necessariamente un altro <tr>. Mi spiego meglio: non posso inserire ad esempio un <div> come campo hidden all'interno della tabella, e poi reinserirci altre righe <tr>, non mi sembra appropriato e poi potrebbe portare a problemi relativi al layout. Questo è limitativo, ma mi sembra comunque una soluzione migliore della prima.

    Mi rendo conto che la spiegazione è un po' confusionaria, quindi provo a fare un esempio pratico.
    Nella form ho la prima <select> che ha 2 valori: Mare, Montagna
    Se seleziono Mare, mi appare una nuova select con 2 valori: Spiaggia, Scogliera
    Se seleziono Spiaggia, mi appare una nuova select con 2 valori: Sabbia, Ghiaia
    Se nella prima select seleziono Montagna, mi appara una nuova select con 2 valori:Neve, Roccia
    Se seleziono Neve mi appare una nuova select con 2 valori: Sci, Snowboard.
    Se seleziono Roccia mi appare una nuova select con 2 valori: Scalata, Parapendio
    .. e così via.
    In pratica è una form il cui risultato finale è l'elaborazione di diversi risultati scelti in cascata, e ogni scelta esclude le altre della stessa select. (ovviamente è solo un esempio, anzichè le select potrei avere radio button, input text, o addirittura altri elementi statici).
    Grazie in anticipo per la pazienza e l'aiuto

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Ciao o ti crei le select dinamiche con creaElement http://forum.html.it/forum/showthrea...hreadid=848168 oppure crei tutti gli oggetti che vuoi nascosti (display:none) e li mostri in base a cosa selezioni, sempre che abbia inteso bene il problema.


    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2011
    Messaggi
    20
    Grazie mille
    Ragionando da esperienze con altri linguaggi non avevo pensato a questa opzione.
    Devo chiedere un'altra cosa però, riguardo ai metodi DOM. Ho letto che se è possibile è sempre meglio usarli, ma potrei avere esigenze di inserire blocchi di codice molto lunghi, o anche inseribili dall'esterno. Esistono altri modi di inserire testo? Ho notato che document.createTextNode considera il parametro come testo, e quindi non va bene. Potrei anche scrivere una funzione che converte da stringa a nodi e farle ritornare il nodo "radice" con tutti i nodi figlio già "appesi".
    Grazie mille

  4. #4
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Non ti seguo, comunque in più a quello già detto potresti creare dei blocchi di codice (html e testo) e caricarli con ajax
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

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.