Campo email

tgat

Nuovo Utente
3 Nov 2012
17
0
1
Salve 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:

HTML:
<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>
 
Ultima modifica di un moderatore:
Semplicissimo almeno credo... provi con questa che chiaramente adatterà al suo scopo :

HTML:
  var iChars = "@" ;
    for ( var i = 0 ; i < data. length ; i ++ ) {
  	 if ( iChars. indexOf ( data. charAt ( i ) ) == - 1 ) {
  	   alert ( "Inserisci perfettamente la tua email" ) ;
  	 return false ;
  	 }

chiaramente la variabile data nel suo caso è la stringa di inserimento dati e questo codice controlla se è non è presente il carattere @ e il carattere & .... infatti il valore è = -1...

Spero di essere stato utile. Buona serata.
 
ciao
scusate se mi intrometto, ma vedo una cosa che non mi quadra
action="paginadiprova.html">
la pagina che riceve i post non può essere html ma deve essere una pagina dinamica (es. paginadiprova.php o paginadiprova.asp)
poi ricorda che se è una cosa importante i controlli lato client in js possono essere molto scenografici, ma sono facilmente aggirabili, i controlli, per essere efficaci, devono essere lato server
 
grazie a tutti, ho risolto il seguente codice:
var ckEmail = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/
if(email.value=="") {
alert("Errore: compilare il campo email");
email.focus();
return false;
}else if(!ckEmail.test(email.value)) {
alert("Errore: Indirizzo email non valido ");
email.focus();
return false;

riguardo all'action era solo un test, grazie dinuovo
 
Semplicissimo almeno credo... provi con questa che chiaramente adatterà al suo scopo :

HTML:
  var iChars = "@" ;
    for ( var i = 0 ; i < data. length ; i ++ ) {
  	 if ( iChars. indexOf ( data. charAt ( i ) ) == - 1 ) {
  	   alert ( "Inserisci perfettamente la tua email" ) ;
  	 return false ;
  	 }

chiaramente la variabile data nel suo caso è la stringa di inserimento dati e questo codice controlla se è non è presente il carattere @ e il carattere & .... infatti il valore è = -1...

Spero di essere stato utile. Buona serata.
non l'ho capito, a me interessa sapere se sono presenti i caratteri "@" e "."
in caso negativo alert, grazie
 
La variabile : data, scritta da me nel suo caso è : nome.value, quindi il controllo che le ho postato controlla che se nella variabile è presente il carattere @ , se non lo trova da un alert....
 
non l'ho capito, a me interessa sapere se sono presenti i caratteri "@" e "."
in caso negativo alert, grazie

Ciao,

un indirizzo email comporta almeno un carattere, la @ almeno un carattere il . almeno un carattere

es:

Codice:
a@a.a

se usi indexOff("@") hai tre opzioni per la ricerca della @ nel campo

== -1 controlla se la @ viene inserita in punto qualsiasi del campo

!= -1 disabilita l'inserimento della @ in tutto il campo

!= 0 la @ deve essere il primo carattere del campo

in una condizione di controllo if il risultato sono valori booleani true o false, la condizione è true se non sono rispettate le condizioni dichiarate.

False se lo sono.

Quindi è bene utilizzare una regexp (espressione regolare) per il controllo.

quello che ti hanno scritto va bene per la condizione: carattere @ carattere . minimo 2 massimo 4 caratteri per il dominio ma c'è un errore

Codice:
var ckEmail = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/

/^ inizio espressione di controllo

[a-zA-Z0-9._-] accetta tutti i caratteri Maiuscoli e minuscoli da A a Z numeri da 0 a 9 il . l'underscore _ il meno -

+@ obbligatoria la @ dopo almeno un carattere della precedente condizione

[a-zA-Z0-9.-] accetta tutti i caratteri Maiuscoli e minuscoli da A a Z numeri da 0 a 9 il . il meno - Errore accetta il . dopo la @

Codice:
a@.a.aa

+\. obbligatorio il . dopo almeno un carattere dopo la @

[a-zA-Z] accetta tutti i caratteri Maiuscoli e minuscoli da A a Z dopo il .

{2,4} quantificatore minimo due caratteri per il dominio massimo quattro

$/fine espressione regolare.

A parte l'errore qua [a-zA-Z0-9.-]

Il codice è lo standard per il controllo di una mail anche se per il punto è bene usare il back-slash \. in una condizione di controllo [] quindi di tipo stringa.

La regexp basta sistemare gli errori, ma sconsiglio vivamente il solo controllo della @ e il .



Valeria.
 
Grazie Valeria per il tutorial :fonzie:
Ma insisto sul controllo della sola presenza dei caratteri "@" e ".", con indexOff mi è stato suggerito il sottostante codice ma non funziona

if(email.value=="") {
alert("Errore: compilare il campo email");
email.focus();
return false;
}else if(email.value.indexOf("@")!=-1 && email.value.indexOf(".")!=-1) {
alert("Errore: Indirizzo email non valido ");
email.focus();
return false;
}

Grazie
 
Grazie Valeria per il tutorial :fonzie:
Ma insisto sul controllo della sola presenza dei caratteri "@" e ".", con indexOff mi è stato suggerito il sottostante codice ma non funziona

if(email.value=="") {
alert("Errore: compilare il campo email");
email.focus();
return false;
}else if(email.value.indexOf("@")!=-1 && email.value.indexOf(".")!=-1) {
alert("Errore: Indirizzo email non valido ");
email.focus();
return false;
}

Grazie

Ciao,

che non funziona lo so,

ma il solo utilizzo di indexOf() validerebbe la mail solo con @. .@ ecc...

Usa una regexp.

Valeria.
 
Ciao,

che non funziona lo so,

ma il solo utilizzo di indexOf() validerebbe la mail solo con @. .@ ecc...

Usa una regexp.

Valeria.
potrei ricevere email da paesi che utilizzano caratteri non latini e/o accentati, pertanto vorrei controllare solo se sono presenti i caratteri @ e .
come posso fare ? il codice postato in precedenza non funziona perchè non mi fa il controllo
Grazie
 
Come già detto una regexp

o uno split()

visto che la tua richiesta procede in altra sede,

buon proseguimento.

Valeria.
 
Ho trovato questo in rete.... non se ti sia utile :

HTML:
/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i

altrimenti vedi qua :
http://ex-parrot.com/~pdw/Mail-RFC822-Address.html
c'è ne è una miriade in rete....
Salve Valeria e ben ritrovata....
 
Ultima modifica:
Ho trovato questo in rete.... non se ti sia utile :

HTML:
/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i

altrimenti vedi qua :
http://ex-parrot.com/~pdw/Mail-RFC822-Address.html
c'è ne è una miriade in rete....
Salve Valeria e ben ritrovata....

Ciao Domenico, basta inserire i codici unicode, il blocco esatto per i caratteri, che include quindi anche le lettere accentate e strane di ogni nazione.

un blocco [] di circa 30 caratteri

:faraone: :elvis::elvis:

Valeria.
 
Ha appena risposto la Sig.na Valeria ad entrambi....

x Valeria.... ha ragione ma sinceramente non mi sono messo a controllarlo passo passo... :(
 
Innanzitutto grazie per le risposte, ma forse sono riuscito a spiegarmi,
esiste una formula che senza specificare tutti i singoli caratteri dice:
carattere qualsiasi, senza che vengano elencati, poi @
poi dinuovo carattere qualsiasi poi .
e poi dinuovo carattere qualsiasi
Non so se sono riuscito a spiegarmi, grazie
 

Discussioni simili