Non c’è form che si rispetti senza bottone di invio o un campo di inserimento di dati. La sintassi tradizionale per creare tale campo (detto appunto di INPUT perchè è destinato a contenere dati inseriti dall'utente) è:
| <INPUT TYPE="..." VALUE="..."> |
Il Tag INPUT non necessita quindi di chiusura. L'attributo TYPE serve per specificare il tipo di campo o bottone, mentre l'attributo NAME il suo nome, mentre il VALUE la scritta che compare sul Submit Button o un valore di default del campo stesso. Fate presente che il valore di default dell'attributo VALUE verrà spedito tramite metodo html e quindi incluso nell'array POST, qualora il campo non fosse compilato dall'utente. E' quindi evidente che, affinchè i dati vengano inviati tramite metodo POST o GET (vedi qui per maggiori dettagli su tali metodi), i bottoni e gli altri campi di inserimento dati debbano essere contenuti in un Tag FORM:
| <FORM METHOD="POST" ACTION="controlla_form.php"> <INPUT TYPE="..." NAME="..." VALUE="..."> </FORM> |
Vediamo un esempio di modulo di compilazione di dati contenente semplicemente un input di inserimento dati ed un bottone di invio, e supponiamo di dare un valore di default al campo:
| <FORM METHOD="POST" ACTION="controlla_form.php"> Nome: <INPUT TYPE="text" NAME="nome" VALUE="inserisci il tuo nome"> <INPUT TYPE="submit" NAME="bottone" VALUE=" Invia "> </FORM> |
|
Nel caso in cui non si inserisse alcun valore e si cliccasse sul bottone, l'array POST che arriva al file controlla_form.php sarà: Array(nome = inserisci il tuo nome, bottone = ok) .
Vediamo ora i principali campi di un modulo di compilazione dati.
| <INPUT TYPE="Submit" NAME="submit" VALUE="invia i dati"> |
L'uso dell'attributo DISABLED nel Tag INPUT disabilita il bottone:
| <INPUT TYPE="radio" NAME="sesso" VALUE="M" > M |
F |
Anche in questo caso è possibile assegnare un valore di default ( CHECKED ) o disabilitare un pulsante usando l'attributo DISABLED nell'INPUT Tag ; così lo è entrambi:
Con i check box possiamo consentire all’utente di operare delle scelte multiple. Ad esempio:
| <INPUT TYPE=" checkbox " NAME=" sesso " VALUE=" M " > M |
F |
Notare la differenza il Radio Button ( oltre alla forma )!!! Anche qui si possono usare gli attributi CHECKED e DISABLED.
Per la Check Box e per i Radio conviene sempre inserire un valore nell'attributo VALUE, poichè sarà proprio tale valore ad essere inviato con il form.
| <SELECT NAME=" città "> <OPTION value=" - inserisci la città - "> - inserisci la città - </OPTION> <OPTION value=" Lucca " > Lucca </OPTION> <OPTION value=" Roma " > Roma </OPTION> <OPTION value= " Napoli " > Napoli </OPTION> <OPTION value= " Pisa " > Pisa </OPTION> </SELECT> |
Quest'altro menù, invece consente di selezionare ed inviare più di una informazione:
| <SELECT NAME =" città " MULTIPLE> <OPTION value= " " > </OPTION> <OPTION value= " Lucca " > Lucca </OPTION> <OPTION value= " Roma " > Roma </OPTION> <OPTION value= " Napoli " > Napoli </OPTION> <OPTION value= " Pisa " > Pisa </OPTION> </SELECT> |
Notare come la larghezza del menù si fissi automaticamente in base alla larghezza del valore più grande in esso contenuto ( per il primo è: - inserisci la città - ). Se si usasse l'attributo SIZE = " n " nel Tag SELECT, potrei stabilirne in ogni caso la dimensione:
Usando l'attributo SELECTED per un dato valore, si fissa un valore predefinito:
| <SELECT NAME = " qty " > <OPTION value= " Lucca " > Lucca </OPTION> <OPTION value= " Roma " SELECTED > Roma </OPTION> <OPTION value= " Napoli " > Napoli </OPTION> <OPTION value= " Pisa " > Pisa </OPTION> </SELECT> |
Siccome i menu di scelta tendono a diventare particolarmente lunghi, nell’HTML 4 è stato introdotto il tag OPTGROUP che consente di suddividere le varie possibilità di scelta in gruppi tramite l’utilizzo di apposite etichette. Ecco l’esempio:
| <SELECT NAME = " citta "> <optgroup label = " citta in Italia " > <OPTION value= " Roma " > Roma </OPTION> <OPTION value= " Lucca " SELECTED > Lucca </OPTION> <OPTION value = " Firenze " > Firenze </OPTION> </optgroup> <optgroup label = " citta in Europa " > <OPTION value= " Parigi " > Parigi </OPTION> <OPTION value= " Londra " SELECTED > Londra </OPTION> </optgroup> </SELECT> |
| <INPUT TYPE = " text " SIZE = " n " MAXLENGTH = " n " > |
L'attributo MAXLENGTH stabilisce il numero massimo di caratteri da inserire nel riquadro; altri attributi sono il NAME, per dare un nome ( non visualizzabile ) alla casella di testo ed il VALUE, per fissare un valore iniziale ( es.: qui il mio testo ):
I campi di testo possono essere anche di sola lettura, usando l'attributo READONLY. Ad esempio:
| <INPUT name = "mioTesto" type = "text" value = "leggere l'informativa" size="25" maxlength="8" READONLY > |
O disabilitati:
| <INPUT name = "mioTesto" type = "text" value = "leggere l'informativa" size = "25" maxlength = "8" disabled > |
Servono per far inserire una password in maniera non visibile letteralmente, ma con i famosi * :
| <INPUT TYPE = " password " size = "18" maxlength = "8" > |
Servono per far inserire un testo molto lungo, in genere che supera i 150 caratteri:
| <TEXTAREA NAME = "testo" ROWS = "8" COLS = "40" >qui puoi scrivere il tuo testo</TEXTAREA> |
ROWS indica il numero di righe della textarea, COLS il numero di caratteri (cioè di colonne) che ogni riga può contenere. Come si può vedere, se si vuol indicare del testo predefinito, in questo caso bisogna inserirlo fra l’apertura e la chiusura del tag.
Un altro attributo è il WRAP = " valore " : i suoi valori sono OFF, se si vogliono ignorare gli a capo, VIRTUAL, se voglio mostrarli ma non inviarli, PHYSICAL se voglio inserirli ed inviarli solo quando sono necessari.
Serve per far resettare all'utente i valori da lui appena inseriti nel modulo di compilazione dati:
| <FORM METHOD = "POST" ACTION = ""> <INPUT name = "mioTesto" type = "text" size = "25" maxlength = "8" > <INPUT TYPE = "reset" value = "Cancella" > </FORM> |
| <INPUT TYPE = "hidden" > |
Tale campo non è visibile all'utente, ma solo al webmaster; come attributi ha il NAME ed il VALUE.
Il campo "image" ci consente di utilizzare come bottoni del form delle vere e proprie immagini e assegnare loro un valore grazie a JavaScript; in questo caso non si tratta propriamente di un bottone ma la funzionalità è la medesima. Ecco il codice:
| <INPUT TYPE = "image" SRC = "immagine.gif" ALT = "indietro" > |
come si può vedere, se non si specifica nulla, l’immagine ha valore di submit. Gli attributi del campo immagine sono molto simili a quelli del tag < IMG >.
Questo modulo serve per inviare dei file via POST; il classico esempio è il campo per uplodare o selezionare dei files presenti sul computer dell'utente:
| <input name="fileUtente" type="file" size="20" > |
Per la loro natura di "raccoglitori di informazioni", i moduli tendono a ingigantirsi e diventare lunghissimi. Per questo, con l’HTML 4 sono stati introdotti dei tag per fare un po’ d’ordine all’interno dei form.
Grazie al tag FIELDSET possiamo creare delle macro-aree all’interno dei form, e grazie al tag LEGEND, possiamo indicare il nome di ciascuna macro-area. Poniamo ad esempio di dover raccogliere i dati di un utente, raccogliendo dati anagrafici, residenza, domicilio e reperibilità sul lavoro. Possiamo farlo con la seguente sintassi:
| <FIELDSET> <LEGEND> Dati anagrafici </LEGEND> </FIELDSET> <FIELDSET> <LEGEND> Residenza </LEGEND> </FIELDSET> |
Un esempio di uso in un modulo potrebbe essere il seguente:
che si ottiene inserendo tale riga nel FIELDSET sotto il Tag LEGEND:
| <LABEL> Anno di nascita: <INPUT type = "text"> </LABEL> |
Utilizzando il tasto "tab" della tastiera l’utente può passare da un campo del form all’altro. Per varie ragioni di impaginazione l’ordine così ottenuto potrebbe però non essere quello desiderato. Grazie all’attributo "tabindex" che si applica ai campi dei moduli è possibili specificare in quale ordine deve avvenire il passaggio da un campo all’altro. Il valore di questo attributo può variare tra 0 e 32767. Vediamo un esempio:
Vedi il codice. Come si può vedere, digitando il tasto tab, l’ordine di passaggio da un campo all’altro è quello indicato nel valore di TABINDEX. Vedendo il codice, si può notare come la funzione degli spazi sia quella di aumentare la dimensione del riquadro esterno.