CONVALIDA DEL
FORM
Javascript è un potente strumento
per convalidare i form prima che il
contenuto venga inviato.
Le cose più ovvie da controllare
sono la corretta sintassi di un
indirizzo email, o se i field da
considerare come valori
contengono testo, ecc.
Questa pagina tratta le 4 tecniche più
importanti.
Osserva questo form:
EMAIL:
VALUE (0-5):
VALUE (Integer, 34 digits):
Do not leave this field
empty:
LA TECNICA
Il codice javascript per convalidare ciò
che viene inserito in un form consiste in
quattro funzioni diverse:
emailvalidation
controlla se un valore si accorda
alla sintassi generale di un email.
valuevalidation
controlla se un valore è
compreso in un certo intervallo.
digitvalidation
controlla se un valore
consiste in un certo numero di
caratteri.
emptyvalidation
controlla se un field è vuoto
oppure no.
IL CODICE
Il programma spiegato in questa
pagina consiste proprio nelle
quattro funzioni elencate qui
sotto:
emailvalidation(this,text)
valuevalidation(this,min,
max,text,type)
digitvalidation(this,min,
max,text,type)
emptyvalidation(this,text)
Puoi convalidare ogni field ogni
volta che questo viene
cambiato, oppure puoi decidere
di convalidare i field tutti
insieme, al momento dell' invio.
Nella seconda metà di questa
pagina imparerai ad usare tutti
e due i metodi insieme ai
programmi:
Prima, osserviamo i diversi
programmi di convalida.
emailvalidation(this,text)
controlla se un valore si
accorda alla sintassi
generale di un email.
Parametri opzionali sono:
text--testo mostrato in una
casella di allarme se il
contenuto è illegale.
function emailvalidation(entered, alertbox)
{
// E-mail Validation by Henrik Petersen / NetKontoret
// Explained at www.echoecho.com/jsforms.htm
// Please do not remove this line and the two lines
above.
with (entered)
{
apos=value.indexOf("@");
dotpos=value.lastIndexOf(".");
lastpos=value.length-1;
if (apos<1 || dotpos-apos<2 || lastpos-dotpos>3 ||
lastpos-dotpos<2)
dotpos=value.lastIndexOf(".");
lastpos=value.length-1;
if (apos<1 || dotpos-apos<2 || lastpos-dotpos>3 ||
lastpos-dotpos<2)
{if (alertbox) {alert(alertbox);} return false;}
else {return true;}
}
}
digitvalidation(this,min,max,text,
type)
controlla se un valore consiste in un
certo numero di caratteri.
Parametri opzionali sono:
min --numero minimo dei caratteri
ammessi nel field.
max --numero massimo dei caratteri
ammessi nel field.
text --testo per la casella di allarme se il
contenuto è illegale.
type --inserire "I" se sono ammessi solo
i numeri interi.
function digitvalidation(entered, min, max, alertbox,
datatype)
{
// Digit Validation by Henrik Petersen / NetKontoret
// Explained at www.echoecho.com/jsforms.htm
// Please do not remove this line and the two lines
above.
with (entered)
{
checkvalue=parseFloat(value);
if (datatype)
{smalldatatype=datatype.toLowerCase();
if (smalldatatype.charAt(0)=="i")
{checkvalue=parseInt(value); if
(value.indexOf(".")!=-1)
{checkvalue=checkvalue+1}};
}
if ((parseFloat(min)==min && value.length<min) ||
(parseFloat(max)==max && value.length>max) ||
value!=checkvalue)
{if (alertbox!="") {alert(alertbox);} return false;}
else {return true;}
}
}
emptyvalidation(this,text)
Controlla se il field è vuoto.
Parametri opzionali sono:
text --testo per la casella di allarme
se il contenuto è illegale.
function emptyvalidation(entered, alertbox)
{
// Emptyfield Validation by Henrik Petersen / NetKontoret
// Explained at www.echoecho.com/jsforms.htm
// Please do not remove this line and the two lines above.
with (entered)
{
if (value==null || value=="")
{if (alertbox!="") {alert(alertbox);} return false;}
else {return true;}
}
}
Nota:
Tutte le funzioni richiedono this per
essere inserite come parametri.
Inserisci semplicemente la parola
"this" come parametro quando
richiami una delle funzioni. Questo
passerà il contenuto del field corrente
alla funzione.
Se non viene inserito alcun testo quando
viene dato un nome alla funzione, questa
non farà comparire alcuna casella per
avvertire la presenza di un errore.
In ogni caso, la funzione rimanderà il valore
"false".
Questa opzione viene usata quando si
opera un controllo di diversi errori nello
stesso momento. Vale a dire: quando
tutti i field vengono controllati nel
momento in cui si clicca sul bottone
d'invio.
USO DEI PROGRAMMI DI
CONVALIDA
Ci sono due modi diversi di
chiamare queste funzioni.
Uno viene usato quando si vuole
controllare immediatamente dopo avere
inserito qualcosa nel field.
L'altro viene usato quando si vogliono
controllare tutti i field
contemporaneamente, quando si clicca
sul bottone di invio.
Convalida onChange:
Per costringere il browser a
controllare immediatamente ogni
field, si aggiunge un onChange ad
ognuno dei tag <input> nel form.
Per esempio: se volessimo
controllare se il valore di un certo
field di testo ha un indirizzo email
valido, inseriremmo questa
sequenza:
<input type="text" name="Email"
size="20"
onChange="emailvalidation(this,'
The E-mail is not valid');">
Convalida onSubmit
Potresti invece preferire che il controllo
avvenga contemporaneamente per tutti i
field, al momento dell'invio.
Per fare ciò, dovresti aggiungere un evento
onSubmit al tag <form>.
Se, per esempio, avessi un form
chiamato "myform" e volessi che tutti i
field venissero controllati quando
l'utente clicca sul tasto 'invio', dovresti
allora creare una funzione in grado di
controllare tutti i field.
Questa funzione dovrà allora
venire richiamata da un evento
onSubmit e aggiunta al tag
<form>.
Se la funzione si chiamasse
"formvalidation()" il tag <form> si
presenterebbe così:
<form onsubmit="return
formvalidation(this)">
La funzione che controlla l'intero form
rimanderà un valore "vero" o "falso". Se
è vero, il form verrà inviato - se è falso,
l'invio sarà annullato.
Un programma in grado di
controllare tutti i field in un form si
presenta così:
function formvalidation(thisform)
Questa funzione controlla l'intero
form prima che sia inviato.
function formvalidation(thisform)
{
with (thisform)
{
if (emailvalidation(Email,"Illegal Email")==false) {Email.focus(); return
false;};
if (valuevalidation(Value,0,5,"Il valore DEVE
essere compreso tra 0-5")==false)
{Value.focus(); return false;};
if (digitvalidation(Digits,3,4,"DEVI inserire 3
or 4 caratteri interi","I")==false)
{Digits.focus(); return false;};
if (emptyvalidation(Whatever,"Il textfield è
vuoto")==false) {Whatever.focus(); return
false;};
}
}
L'INTERO PROGRAMMA
Se vuoi usare tutte e quattro le
sequenze di convalida e il
programma che controlla tutti i field
allo stesso tempo, copia pure
l'intero codice che troverai qui sotto.
Nota:
La funzione chiamata
formvalidation() deve essere
necessariamente personalizzata
per adattarsi al tuo form.
<script>
funzione emailvalidation(entered,
alertbox)
{
// E-mail Validation by Henrik Petersen /
NetKontoret
// Explained at
www.echoecho.com/jsforms.htm
// Please do not remove this line and the
two lines above.
with (entered)
{
apos=value.indexOf("@");
dotpos=value.lastIndexOf(".");
lastpos=value.length-1;
if (apos<1 || dotpos-apos<2 || lastposdotpos>3 || lastpos-dotpos<2)
{if (alertbox) {alert(alertbox);} return
false;}
else {return true;}
}
}
funzione valuevalidation(entered, min,
max, alertbox, datatype)
{
// Value Validation by Henrik Petersen /
NetKontoret
// Explained at
www.echoecho.com/jsforms.htm
// Please do not remove this line and the
two lines above.
with (entered)
{
checkvalue=parseFloat(value);
if (datatype)
{smalldatatype=datatype.toLowerCase();
if (smalldatatype.charAt(0)=="i")
{checkvalue=parseInt(value)};
}
if ((parseFloat(min)==min &&
checkvalue<min) ||
(parseFloat(max)==max &&
checkvalue>max) || value!=checkvalue)
{if (alertbox!="") {alert(alertbox);} return
false;}
else {return true;}
}
}
funzione digitvalidation(entered, min,
max, alertbox, datatype)
{
// Digit Validation by Henrik Petersen /
NetKontoret
// Explained at
www.echoecho.com/jsforms.htm
// Please do not remove this line and the
two lines above.
with (entered)
{
checkvalue=parseFloat(value);
if (datatype)
{smalldatatype=datatype.toLowerCase();
if (smalldatatype.charAt(0)=="i")
{checkvalue=parseInt(value); if
(value.indexOf(".")!=-1)
{checkvalue=checkvalue+1}};
}
if ((parseFloat(min)==min &&
value.length<min) ||
(parseFloat(max)==max &&
value.length>max) || value!=checkvalue)
{if (alertbox!="") {alert(alertbox);} return
false;}
else {return true;}
}
}
funzione emptyvalidation(entered,
alertbox)
{
// Emptyfield Validation by Henrik
Petersen / NetKontoret
// Explained at
www.echoecho.com/jsforms.htm
// Please do not remove this line and the
two lines above.
with (entered)
{
if (value==null || value=="")
{if (alertbox!="") {alert(alertbox);} return
false;}
else {return true;}
}
}
funzione formvalidation(thisform)
{
// This function checks the entire form
before it is submitted
// Note: This function needs to be
customized to fit your form
with (thisform)
{
if (emailvalidation(Email,"Illegal Email")==false) {Email.focus(); return
false;};
if (valuevalidation(Value,0,5,"Value MUST
be in the range 0-5")==false)
{Value.focus(); return false;};
if (digitvalidation(Digits,3,4,"You MUST
enter 3 or 4 integer digits","I")==false)
{Digits.focus(); return false;};
if (emptyvalidation(Whatever,"The
textfield is empty")==false)
{Whatever.focus(); return false;};
}
}
</script>
Scarica

function formvalidation(thisform)