Form dinamico in base a scelta utente

Ciao a tutti, volevo un consiglio.

Vorrei fare un form unico nel quale l’utente come prima cosa sceglie una voce da una dropdown listbox.

In base al valore che lui sceglie, cambia il resto della form.

Per farvi un esempio semplice. Immaginate che l’utente debba scegliere se è un utente privato o un’azienda.

Se sceglie che è utente privato, allora successivamente gli chiederò il nome il cognome etc…, se è un’azienda allora chiederò ragione sociale, partita iva,etc…

Ovviamente posso farlo semplicemente ricaricando la pagina gestendola in 2 step differenti.

Siccome però vedo che la tendenza è sempre più quella di caricare il meno possibile le pagine, perchè migliora la user experience, volevo sapere da voi qual’è il metodo migliore.

In passato ho utilizzato il “change” del “pluginEvents” della Select2 creando una funzione JavaScript che richiamava un controller al quale passavo l’item scelto e lui ritornava dell’html che io andavo ad “attachare” ad un div vuoto. Ma non so se effettivamente la soluzione migliore o se con Ajax/PAjax/AngularJS si può fare di meglio.

Qualche consiglio?

Thank’s

Se vuoi mantenere lo storico della navigazione usa pJax che già è bello pronto su Yii, in questo modo se l’utente clicca su back torna alla pagina precedente senza ricaricare da 0.

Ti separi le form in viste parziali che carichi ad un evento che decidi tu via JS, select2 è un ottimo plugin ma forse è troppo per questo caso!

Grazie per le sempre preziose dritte.

Più in generale ora mi trovo sempre più spesso a dover creare dei form dove a seconda di quello che impostano gli utenti, devo visualizzare o meno, caricare o meno certi pezzi.

Faccio un esempio. Ho un form dove l’utente deve stabilire delle policy di protezione di un contenuto scegliendo tra: pubblico / protetto con password / access list.

L’utente effettua la scelta tramite dropdownlistbox.

  • Se l’utente sceglie Pubblico, allora ok preme submit e siamo apposto.

  • Se l’utente sceglie Password, allora occorre che imposto visible=true ad un campo che fino a quel momento era nascosto.

  • Se l’utente sceglie access list

allora devo creare qualcosa di più complesso dove da una parte sceglie gli utenti e dall’altra vede una lista con gli utenti scelti.

Hai idea o qualche traccia di quale modo utilizzare per gestire queste variazioni "dinamiche" dei form?

grazie

Ciao,

Potresti, al load della pagina, crearti tutti i tuoi blocchi e ogni blocco metterlo dentro un div con un id.

In jquery al caricamento del dom metti in hide i tuoi div. Poi crei una funzione che al change del valore della tua select mostri un div al posto di altri.

Potresti avere qualche problema però se nel rules del tuo model questi campi sono stati messi come obbligatori.

Spero d’esserti stato d’aiuto ;)