L'inserimento di dati in una form è molto importante per certe pagine Web. L'input delle form spesso viene inviato al server per le opportune elaborazioni. Javascript consente di controllare l'input delle form prima del loro invio al server. Come prima cosa voglio mostrarvi come è possibile controllare l'input di una form, poi vedremo come è possibile ottenere l'invio di informazioni con Javascript o HTML.
Prima di tutto creeremo una piccola form. La pagina HTML conterrà due caselle di testo. L'utente dovrà scrivere il suo nome nella prima casella e l'indirizzo di e-mail nella seconda. Potete inserire qualsiasi cosa negli elementi della form, poi cliccate sul relativo pulsante. Provate anche a non inserire nulla e cliccate sul pulsante.
Per quanto riguarda la prima casella di testo, vedrete un messaggio di errore quando viene lasciata in bianco, mentre un qualsiasi input viene considerato valido. Naturalmente ciò non previene l'inserimento di un nome sbagliato. Il browser accetta anche numeri, quindi se inserite '17' otterrete un 'Ciao 17!'.Come è fatto lo script che crea questa form e ne controlla l'input? Eccolo:
<html> <head> <script language="JavaScript"> <!-- function test1(form) { if (form.text1.value == "") alert("Inserisci una stringa, per favore!") else { alert("Ciao "+form.text1.value+"! Inserimento dati ok!"); } } function test2(form) { if (form.text2.value == "" || form.text2.value.indexOf('@', 0) == -1) alert("Indirizzo di e-mail non valido!"); else alert("OK!"); } // --> </script> </head> <body> <form name="first"> Inserisci il tuo nome:<br> <input type="text" name="text1"> <input type="button" name="button1" value="Controlla" onClick="test1(this.form)"> <P> Inserisci il tuo indirizzo di e-mail:<br> <input type="text" name="text2"> <input type="button" name="button2" value="Controlla" onClick="test2(this.form)"> </body>Diamo prima uno sguardo al codice HTML nel corpo del documento. Abbiamo creato due caselle di testo e due pulsanti. I pulsanti invocano le funzioni test1(...) o test2(...) in base a quale di loro viene selezionato e viene passato come argomento this.form per permetterne l'accesso ai suoi elementi.
Quali diverse possibilità
esistono per inviare il contenuto di una form? Il modo più semplice
consiste nell'invio tramite e-mail. Questo è il metodo che ci accingiamo
ad analizzare. Se volete ottenere un feedback senza e-mail e volete che
il server gestisca l'input automaticamente, dovete usare CGI, per il momento.
Dovete utilizzare CGI, per esempio, se volete creare un motore di ricerca
come Yahoo, in cui l'utente ottiene un risultato velocemente dopo l'inserimento
dei dati nella form. L'utente non deve attendere che il gestore del server
legga l'input, vada alla ricerca dei dati richiesti e fornisca il relativo
output: il tutto viene fatto automaticamente dal server. Javascript non
è in grado di fare cose del genere. Anche se volete creare un guestbook
(registro dei visitatori), non potete fare in modo con Javascript che il
server aggiunga automaticamente informazioni ad una pagina HTML esistente.
Soltanto con CGI potete ottenere questo al momento. Potete comunque creare
un guestbook utilizzando l'e-mail: dovrete però inserire le informazioni
manualmente. Può andar bene se non vi aspettate 1000 mail al giorno!
Il codice che segue è in puro HTML, quindi non
abbiamo bisogno di Javascript! Naturalmente se vogliamo controllare l'input
prima di inviare la form, dovremo scrivere qualche funzione Javascript.
Devo dire che il comando mailto non funziona con tutti i browser, ma i
browser più recenti lo supportano.
<FORM METHOD=POST ACTION="mailto:nome@domi.nio"> <H3>Ti piace questa pagina?</H3> <INPUT NAME="choice" TYPE="RADIO" VALUE="1">No per niente.<BR> <INPUT NAME="choice" TYPE="RADIO" VALUE="2" CHECKED>E' una perdita di tempo.<BR> <INPUT NAME="choice" TYPE="RADIO" VALUE="3">E' il peggior sito della Rete.<BR> <INPUT NAME="submit" TYPE="SUBMIT" VALUE="Send"> </FORM>Con questa form avrete un feedback via e-mail. L'unico problema è che riceverete una mail che può sembrare incomprensibile a prima vista. Talvolta tutti gli spazi vengono sostituiti con '+' o con '%20'. Le+mail+possono+avere+questo+aspetto. Esistono dei parser sulla Rete che formattano la mail in un aspetto più gradevole.
C'è un'altra cosa che può rendere gli elementi della vostra form un po' più user-friendly. Potete stabilire su quale elemento impostare inizialmente il focus oppure potete indicare al browser di posizionare il focus sulla form in cui l'utente ha inserito dei dati sbagliati. Ciò vuol dire che il browser posizionerà il cursore nell'elemento della form specificato in modo tale che l'utente non deve cliccarvi sopra per inserire i dati. Potete fare ciò con la seguente funzione:
function setfocus() { document.first.text1.focus(); return; }Questo script imposta il focus sulla prima casella di testo della form dell'esempio illustrato prima. Occorre specificare il nome dell'intera form, nel nostro esempio first, e il nome del singolo elemento, text1. Se volete impostare il focus su questo elemento quando la pagina viene caricata, dovete aggiungere la proprietà onLoad al tag <body>; per esempio:
<body onLoad="setfocus()">