Articolo originale: HTML Form – Input Type and Submit Button Example

I form (moduli) sono una delle parti più importanti del web. Senza di essi, non ci sarebbe un modo facile per raccogliere dati, cercare risorse o effettuare un'iscrizione per ricevere informazioni preziose.

Puoi inserire i form nelle pagine web con l'elemento HTML form. All'interno di questo elemento possono essere inseriti parecchi elementi input, noti anche come controlli del form.

In questo tutorial, esploreremo l'elemento HTML form, i vari tipi di elementi input che può contenere e come creare un pulsante di invio con il quale inviare i dati.

Alla fine, conoscerai il funzionamento dei form e sarai in grado di realizzarli con sicurezza.

Sintassi Base per un Form HTML

<form action="mywebsite.com" method="POST">
    <!--Input di qualsiasi tipo ed elementi textarea vanno qui-->
</form>

Tipi di Input per i Form HTML

Si utilizza il tag <input> per creare diversi controlli in un form HTML. È un elemento in linea e riceve attributi come type, name, minlength, maxlength, placeholder e così via. Ciascuno di essi hanno specifici valori che possono ricevere.

L'attributo placeholder è importante in quanto aiuta l'utente a capire a cosa serve il campo di input prima che possa digitare qualcosa.

Ci sono 20 tipi di input diversi, e li esamineremo uno ad uno.

Tipo Text

Questo tipo di input ottiene il valore di  “text” e crea una riga singola di testo da inserire.

<input type="text" placeholder="Enter name" />

Un input di tipo text viene presentato come nella videata seguente:

textInput

Tipo Password

Come suggerisce il nome, questo tipo di input si utilizza per richiedere password. Rende automaticamente invisibile all'utente quanto sta digitando, a meno che l'elemento non venga manipolato tramite JavaScript.

<input type="password" placeholder="Enter your password" />
passwordInput

Tipo Email

Un input di tipo email definisce un campo per digitare un indirizzo email. L'input viene automaticamente validato per verificare la conformità con la sintassi di un indirizzo email.

<input type="email" placeholder="Enter your email" />
typeEmail

Tipo Number

Questo tipo consente all'utente di inserire solamente numeri.

<input type="number" placeholder="Enter a number" />
numberInput

Tipo Radio

Talvolta gli utenti devono effettuare una scelta tra diverse opzioni. Questo tipo di input consente all'utente di scegliere un elemento tra quelli proposti.

 <input type="radio" />
typeRadio

Tipo Checkbox

Con l'input di tipo radio gli utenti possono effettuare una scelta tra le opzioni proposte, ma se volessi rendere possibili tante scelte contemporaneamente? Ecco a cosa serve un input di tipo checkbox.

<input type="checkbox" />
typeCheckbox

Tipo Submit

Questo tipo si usa per aggiungere un pulsante di invio a un form. Quando l'utente fa click sul pulsante, il form viene inviato. Riceve un attributo value che definisce il testo che appare all'interno del pulsante.

<input type="submit" value="Enter to Win" />
typeSubmit

Tipo Button

Questo tipo di input crea un pulsante, che può essere manipolato con JavaScript con un event listener per l'evento onClick. Crea un pulsante come il tipo submit, ma il valore del testo del pulsante deve essere specificato.

<input type="button" value="Submit" />
typeButton

Tipo File

Definisce un campo per l'invio di uno o più file. Quando un utente fa click su questo controllo, gli viene richiesto di scegliere il file da inserire, che potrebbe essere un'immagine, un PDF e così via.

<input type="file" />

Ecco come viene presentato un input di tipo file:

fileInput

Tipo Color

Questo tipo di input è stato introdotto con HTML5. Con questo l'utente può scegliere un colore. Il nero (codice esadecimale #000000) è il valore predefinito, ma può essere modificato inserendo nel parametro value il colore desiderato in formato esadecimale.

Molti sviluppatori hanno usato questo elemento per poter scegliere le varie tonalità di colore nei formati RGB, HSL e alfanumerico

<input type="color" />

Ecco come viene presentato questo tipo di input, una volta che l'utente ha fatto click sull'elemento:

colorInput

Questo tipo di input definisce un campo di testo, proprio come il tipo text. Ma ha il solo scopo di consentire all'utente di effettuare una ricerca. Un pulsante di cancellazione (una x) all'interno dell'elemento appare una volta che si è iniziato a digitare.

<input type="search" />
typeSearch

Tipo URL

Quando viene impostato un elemento input con questo attributo, viene mostrato un campo che può essere usato per digitare un URL.

<input type="url" />
typeURL

Tipo Tel

Questo tipo consente di ottenere numeri di telefono dagli utenti.

<input type="tel" />
typeTel

Tipo Date

Potresti esserti registrato in un sito web che richiede l'inserimento di una data per un certo evento. Questo sito probabilmente usa un input di questo tipo.

<input type="date" />

Ecco come viene presentato questo tipo di input:

dateInput

Tipo Datetime-local

Funziona come il tipo date, ma consente all'utente anche di scegliere un orario oltre a una data.

<input type="datetime-local" />
datelocalInput

Tipo Week

Questo tipo consente all'utente di selezionare una particolare settimana in un anno.

<input type="week" />
weekInput

Tipo Month

Con questo tipo di input vengono presentati i mesi, affinché l'utente possa effettuare una scelta facendo click su uno di essi.

<input type="month" />
monthInput

Textarea

Ci sono situazioni nelle quali un utente deve riempire più righe di testo, pertanto il tipo di input text non sarebbe adatto, in quanto consente di riempire solo una riga di testo.

textarea consente all'utente di inserire testo su più righe. Tramite gli attributi cols e rows consente di impostare rispettivamente il numero di colonne e di righe per l'elemento.

<textarea cols="50" rows="20"></textarea>
textarea

Select

È come avere le funzionalità di un elemento di tipo radio e di tipo checkbox assieme. Viene inserito nel form tramite due elementi, l'elemento select propriamente detto e, al suo interno, tanti elementi option quante sono le opzioni da offrire.

Nella modalità predefinita, l'utente può scegliere solo una opzione ma con l'attributo multiple è possibile selezionare più opzioni.

<select>
      <option value="HTML">Select a Language</option>
      <option value="HTML">HTML</option>
      <option value="CSS">CSS</option>
      <option value="JavaScript">JavaScript</option>
      <option value="React">React</option>
</select>
selectDemo

Come Abbinare un Etichetta agli Elementi Input

Assegnare etichette ai controlli di un form con l'elemento label è importante. Quando sono correttamente abbinate al relativo campo di input tramite il loro attributo for, che deve essere valorizzato con il contenuto dell'attributo id dell'elemento input relativo, facilitano anche l'utente in quando può cliccare sull'etichetta stessa per accedere al controllo input relativo.

<label for="name">Name</label>
<input type="text" id="name" /> <br />
<label for="check">Agree with terms</label>
<input type="checkbox" id="check" />
labelDemo

Come Funzionano i Form HTML

Quando un utente riempie i campi di un form, poi fa click sul pulsante di invio, manda i dati contenuti nei controlli del form al server tramite una richiesta con un metodo HTTP GET o POST .

Quindi come viene specificato il server? L'elemento form riceve un attributo action, che deve avere come valore l'URL del server al quale inviare i dati. Riceve anche un attributo method, che indica il metodo HTTP usato per veicolare i valori al server specificato.

Questo metodo potrebbe essere  GET o POST. Con il metodo GET i valori digitati dall'utente sono visibili nella stringa dell'URL quando viene inviato. Con il metodo POST i valori vengono inviati nel corpo della richiesta, di conseguenza non sono visibili nell'URL.

Se non viene usato l'attributo method, viene utilizzato il metodo GET come valore predefinito.

Quindi quando dovresti usare il metodo GET o POST? Usa GET per inviare dati non sensibili o per ottenere dati da un server (ad esempio durante una ricerca). Usa POST quando invii file o dati sensibili.

Mini Progetto: Creare un Form di Contatto di Base

Utilizziamo quanto appreso sugli elementi di un form per creare un semplice form di contatto. Introdurrò anche alcuni concetti ulteriori mentre lo sviluppiamo.

Ecco il Codice HTML:

<form action="example-server.com">
      <fieldset>
        <legend>Contact me</legend>
        <div class="form-control">
          <label for="name">Name</label>
          <input type="name" id="name" placeholder="Enter your name" required />
        </div>

        <div class="form-control">
          <label for="email">Email</label>
          <input
            type="email"
            id="email"
            placeholder="Enter your email"
            required
          />
        </div>

        <div class="form-control">
          <label for="message">Message</label>
          <textarea
            id="message"
            cols="30"
            rows="10"
            placeholder="Enter your message"
            required
          ></textarea>
        </div>
        <input type="submit" value="Send" class="submit-btn" />
      </fieldset>
</form>

Cosa succede in questo codice HTML?

Innanzitutto un elemento form racchiude tutti gli altri elementi. L'attributo action è impostato su “example-server.com”, un server fittizio dove saranno ricevuti i dati.

Dopo l'elemento form, ogni altro elemento è racchiuso tra un elemento fieldset al cui interno si trova un tag legend.

Usiamo l'elemento fieldset per raggruppare input correlati, il tag legend contiene un'intestazione che descrive quali dati verranno raccolti dalla sezione.

Gli elementi di input name, email e textarea sono tutti all'interno di un elemento div con la classe form-control, in modo che si comportino come un elemento di tipo blocco, per facilitare l'applicazione di uno stile CSS.

Sono anche validati con l'attributo required, pertanto il form non viene inviato se i campi caratterizzati con quell'attributo sono vuoti.

Dopo tutto questo, il form apparirà come nella videata seguente:

unstyledForm

Molto brutto, non è vero? Dobbiamo applicare qualche stile al form!

Ecco il codice CSS:

body {
    display: flex;
    align-items: center;
    justify-content: center;
    height: 100vh;
    font-family: cursive;
  }

 input,
    textarea {
    width: 100%;
    padding: 5px;
    outline: none;
  }

  label {
    line-height: 1.9rem;
  }

  input[type="submit"] {
   transform: translate(2.2%);
   padding: 3px;
   margin-top: 0.6rem;
   font-family: cursive;
   font-weight: bold;
  }

 fieldset {
   padding: 20px 40px;
 }

Cosa fa questo codice CSS?

Centriamo tutto orizzontalmente all'interno del tag body con Flexbox, e verticalmente dando un'altezza di viewport pari al 100%. Usiamo una famiglia di caratteri corsivi.

Diamo agli elementi di input e al textarea una larghezza del 100% in modo che si espandano orizzontalmente. Le etichette hanno un'altezza di riga minima di 1.9rem (30.4px), in modo che non siano troppo vicine ai loro rispettivi elementi input.

Abbiamo disegnato in modo specifico il pulsante (pulsante di tipo input) con la proprietà transform per spingerlo al centro, perché era un po' fuori centro. Gli abbiamo dato una spaziatura all'interno di 3px per avere più spazio attorno ad esso. Abbiamo quindi selezionato una famiglia di caratteri corsivi in grassetto.

Visto che il pulsante era troppo vicino all'elemento textarea, abbiamo impostato un margine superiore di 0.6rem per portarlo un poco più in basso.

All'elemento fieldset abbiamo applicato una spaziatura interna di 20px in alto e in basso e 40px a destra e sinistra per distanziarlo dal bordo che crea attorno all'elemento form nel quale è contenuto.

Alla fine di tutto questo, abbiamo questo bel form:

styledForm

Conclusione

Spero che questo tutorial ti abbia aiutato a capire come funzionano i form. Ora dovresti avere le conoscenze necessarie per integrare i form nei tuoi siti web, in modo da poter iniziare a raccogliere dati.

Grazie per la lettura e buona programmazione.