All’interno di un form, nella visualizzazione predefinita gli elementi sono allineati verticalmente, ma è possibile utilizzare classi aggiuntive per variare questo tipo di layout.
Bootstrap applica automaticamente a tutti i form display: block e width: 100%.
Organizzazione dei campi
Per raggruppare correttamente gli elementi di un modulo form è bene utilizzare la classe .form-group per ogni singolo blocco, in questo modo l’elemento input, l’etichetta, il testo di aiuto opzionale e la messaggistica di validazione otterranno lo stile grafico e le funzionalità predisposte per loro. Puoi usarlo con <fieldset>, <div> o qualsiasi altro elemento.
Dimensionamento delle colonne
Strutture più complesse possono essere costruite usando il sistema a griglia, da utilizzare per layout che richiedono più colonne, larghezze diverse e opzioni di allineamento aggiuntive. La classe .row ne assicura una corretta spaziatura.
La classe .row sostituisce in Bootstrap5 la classe .row Il tema garantisce compatibilità all'indietro, renderizzando le vecchie classi - se ancora presenti nel markup - come le nuove.
Si può scegliere di dare una dimensione ad una colonna, ad esempio dandogli una classe .col-md-6 per ottenere una certo design dal breakpoint md in su, mentre le restanti .col-md si divideranno il resto dello spazio.
Le tecnologie assistive come gli screenreader avranno problemi con i tuoi moduli se non includi un’etichetta per ogni input. Per questi moduli in linea, si può nascondere le etichette usando la classe .visually-hidden. Esistono altri metodi alternativi per fornire un’etichetta per le tecnologie assistive, come l’attributo aria-label, aria-labelledby o title. Se nessuno di questi è presente, le tecnologie assistive possono ricorrere all’uso dell’attributo placeholder, se presente, ma è sconsigliato.
Auto-dimensionamento
L’esempio seguente usa una delle utilità di flexbox per centrare verticalmente dal breakpoint lg in su il contenuto e cambiando .col con .col-auto in modo che le colonne occupino solo lo spazio necessario. In altre parole, la colonna si dimensiona in base al contenuto. È possibile usarlo anche quando sono presenti altre colonne con dimensioni specifiche (es.: col-sm-3).
@
Validazione - legacy
Questo approccio alla validazione dei campi - seppure ancora supportato - è superato in Bootstrap5 da una nuova modalità.
Fornisci un feedback ai tuoi utenti con la validazione del form HTML5 disponibile nei browser supportati. Scegli tra le risposte di convalida predefinite del browser o implementa messaggi personalizzati con le classi integrate inizializzate con JavaScript.
Ecco come funziona la validazione dei form:
La validazione viene applicata tramite due pseudo-classi CSS: :invalid e :valid. Si applicano agli elementi <input>, <select> e <textarea>.
In alternativa esistono le classi .is-invalid e .is-valid che possono essere usate al posto delle pseudo-classi per una validazione lato server. Non richiedono la presenza della classe .was-validated nel contenitore padre.
A causa dei vincoli nel modo in cui i CSS funzionano, non possiamo (al momento) applicare gli stili a un <label> che precede un controllo del form nel DOM senza l’aiuto del codice JavaScript personalizzato.
Tutti i browser moderni supportano le constraint validation API, una serie di metodi JavaScript per la convalida dei controlli del modulo.
I messaggi di feedback possono utilizzare le (diversi da un browser all’altro e non stilizzati tramite CSS) o gli stili di feedback personalizzati con HTML e CSS aggiuntivi.
Puoi fornire messaggi di validazioni personalizzati con setCustomValidity in JavaScript.
Per i messaggi personalizzati di convalida del form, dovrai aggiungere l’attributo booleano novalidate al tuo <form>. Questo disabiliterà le descrizioni di feedback predefinite del browser, ma fornirà comunque l’accesso alle API di validazione JavaScript. Prova a cliccare sul pulsante Invia del modulo sottostante; Javascript intercetterà l’evento e mostrerà i feedback all’utente. Vedrai così gli stili :invalid e :valid applicati ai controlli del modulo.
Nota sulla validazione Javascript: nel codice javascript di esempio la validazione viene eseguita contestualmente al click sul bottone di invio a partire dal binding sull'evento submit form.addEventListener('submit', function(event) { [...]. Nulla impedisce che lo script di validazione venga eseguito in relazione ad altri eventi, ad esempio al cambio del valore di un campo specifico o di un campo qualsiasi del form a partire dall'evento change e relativo selettore Js.
Validazione
Per la validazione dei forms è consigliato il plugin Just Validate.
I campi che necessitano di validazione acquisiranno all’invio del form le classi CSS definite nello script che attiva il plugin. Nel nostro caso le classi saranno is-invalid e just-validate-success-field. I messaggi di errore avranno classe just-validate-error-label.
Di seguito un esempio di form validato con Just Validate; per il funzionamento e le opzioni disponibili, si consiglia di consultare la documentazione.