- Home
- Categorie
- Coding e Sistemistica
- Javascript & Framework
- [Javascript] - Campo email.
-
[Javascript] - Campo email.
Saluti a tutti
Premetto che sono nuovo con il javascript;
ho un modulo con 2 campi di cui il secondo è un campo email, riesco solo a
verificare se è stato compilato, ma come posso verificare se è presente il "@" e "."
ed in caso negativo bloccare l'invio del modulo tramite l'alert ?
Un grazie anticipato a chi vorrà rispondermi; di seguito il codice:<form name="modulo" id="modulo" onSubmit="return controllo();" method="post" action="paginadiprova.html">
Nome
<input name="nome" type="text" id="nome" size="30" />
<br />
Email
<input name="email" type="text" id="email" size="30" />
<br />
<input type="submit" name="Submit" value="Invia" />
</form>
<script language="JavaScript">
function controllo(){
with(document.modulo) {
if(nome.value=="") {
alert("Errore: compilare il campo NOME");
nome.focus();
return false;
}
if(email.value=="") {
alert("Errore: compilare il campo email");
email.focus();
return false;
}
}
return true;
}
</script>
-
Nemmeno io sono un esperto di JavaScript, però prova a sostituire la riga:
[HTML]if(email.value=="") {[/HTML]
Con questa:
[HTML]if (email.value == "" || email.value.indexOf ('@', 0) < 1 || email.value.indexOf ('.', 0) < 1) {[/HTML]
-
Esiste una cosa chiamata regex (regular expressions) che è davvero molto,molto bella Scriverti per filo e per segno di cosa si tratta sarebbe un po' troppo lungo, ma se cerchi su google troverai guide complete sull'argomento e scoprirai che ti si aprirà un mondo davanti
Ho da poco scoperto (in verità, ho guardato su google dopo aver letto la tua domanda) che esistono anche in javascript
Eccoti un breve esempio appena scritto, con le mie neo apprese conoscenze delle regex in javascript :<script> function check (address) { var a = /^[a-z0-9_]{1,}\@[a-z0-9\.]{1,}\.[a-z]{2,4}$/; var x = a.exec (address); if (x==null) { document.write ("Email sbagliata!"); } else { document.write ("Email accettata ;)"); } } </script> <!-- (fai attenzione, visto che non ho la possibilità di scrivere indirizzi email, l' alla riga successiva va inteso come @) --> <input type = 'button' onClick='check("address11host.com");' value='Prova'>
Questo codice, molto semplice una volta che avrai imparato a usare le regex, stampa un messaggio "positivo" se l'indirizzo email ha la seguente struttura:
(fai attenzione, visto che non ho la possibilità di scrivere indirizzi email, l' alla riga successiva va inteso come @)
xxxxxyyyy.zzzDove xxxxx è una stringa di 1 o + caratteri, contenente lettere dalla a alla z (minuscole), numeri e l'underscore (_); yyyy è una stringa (di almeno 1 carattere) formata da lettere minuscole, punti (.) e numeri, e zzz una stringa lunga da 2 a 4 lettere minuscole.
La regex che ho scritto è molto semplice e probabilmente taglierà fuori alcuni casi speciali.. In giro per internet potrai certamente trovare regex più restrittive, oppure, una volta imparate, puoi scrivere la tua "ad hoc"