Newsgroup: it.comp.lang.javascript
Titolo: form mail obbligatorio

Ciao a tutti!
Qual è il metodo + semplice per rendere obbligatoria la compilazione di un
form?
Ed in particolare come faccio per il forma in cui si deve inserire l'email??
(ad es. pensavo mediante un finestra di alert quindi grazie uno script java,
ma non saprei quale..)
Grazie a chiunque mi risponda!!

obbligatori i campi del form? <form ... onsubmit='return
tua_funzione_di_controllo()'>
nella function tua_funzione_di_controllo verifichi, se qualche campo non č
compilato return false e il submit non viene eseguito
Per e-mail: cosa intendi? Se vuoi verificare che esista non č fattibile; se
vuoi testare la sintassi forse c'č un esempio su 
http://www.jsdir.com/

L'unico controllo che puoi fare sull'email è controllare che sia inserito il
carattere @, in questo modo:
document.tuaform.email.value.indexOf("@")==-1
se questo controllo da come risultato "true" vuol dire che tale carattere
non è stato inserito.
In particolare il metodo indexOf ti restituisce la posizione del carattere
in una stringa e restituisce -1 se la stringa non contiene tale carattere.
Ciao.
Alessia

Beh, non solo...@ non deve esserci 2 volte, alcuni caratteri non sono
ammessi, il punto deve essere dopo @ etc etc
Io uso questa (trovata non ricordo dove e ampliata):
 function controllo_email(sEmail,ammettinull) {
  //ammettinull=0 => se non passo sEmail return false altrimenti true
(default se non passo ammettinull)
  if (sEmail=="") return (ammettinull==0)?false:true;
  var nondevetrovare=new Array("@."," ","'","\"");
  for (var x=0;x<nondevetrovare.length;x++)
 if (sEmail.indexOf(nondevetrovare[x])>=0) return false;
  var devetrovare=new Array("@",".");
  for (var x=0;x<devetrovare.length;x++)
   if (sEmail.indexOf(devetrovare[x])<0) return false;
  //non piů di un @
  var totchar=sEmail.match(/@/g);
  if (totchar.length>1) return false;
  //il . deve esserci dopo @ e non deve essere l'ultimo carattere
  return
((sEmail.indexOf(".",sEmail.indexOf("@"))>sEmail.indexOf("@"))&&(sEmail.inde
xOf(".",sEmail.indexOf("@"))<sEmail.length-1))?true:false;
}

 ammessi, il punto deve essere dopo @ etc etc
[...]
Sì, ma in js ci sono le espressioni regolari.
function checkMail(str){
 return str.match(/^[\w-\.]*[\w\.]@[\w]+[\w\.]+\.+[\w]{2,}$/gi)?true:false;
}
Saludos

Pregiato


ERRATA CORRIGE
Scusate ma scrivendola in fretta non avevo considerato domini con il - e
altre piccole amenità...
function checkMail(str){
    return
str.match(/^\w+[-\.]{0,1}\w+@{1}\w+[\.-]{0,1}\w+\.{0,1}\w+[\.-]{0,1}\w+\.{1}
\w{2,}$/gi)?true:false;
}
RiSaludos

Come mai non mi accetta 
cla...@eir.it
  (però mi accetta
cla...@executive.it
) ?

Credo manchi uno \ al . dopo l'@:
return str.match(/^[a-z0-9.\-_]+\@[a-z0-9.\-]+\.[a-z]{2,4}$/gi)?true:false;

 return str.match(/^[a-z0-9.\-_]+\@[a-z0-9.\-]+\.[a-z]{2,4}$/gi)?true:false;
E conviene anche tenere in conto le maiuscole e non limitare a 4 il TLD 
che magari in futuro aumentano i caratteri.
La RegExp di ppk mi sembra piu' completa: 
http://www.jsdir.com/tutorials/remail.asp
-- 
Ciao, Riccardo
------------------------------------------------------------------------
http://www.jsdir.com
 ---- Bring Your Site To Life!!!!
------------------------------------------------------------------------
http://www.dev2dev.it
 - La rete ha connesso nuove particelle - D2D006
------------------------------------------------------------------------
 ----> itALY = it <----

 Con "i" vai insensitive, e il dominio e` insensitive.
Ah gia'! :-)


Come la avevi scritta te (return del match) restituisce l'intera stringa
oppure null...in effetti potrebbe bastare, dipende da come uno è abituato,
io preferisco farmi restituire true-false...è questione di comodità: con
entrambe dovrebbe funzionare if(!controllo_email(email_fornita))
alert("e-mail errata")

 
cla...@executive.it
) ?
1) perché sono cotto come un sardone
2) perché non devo scrivere boiate alle 18.30 quando non ho voglia di
testarle
3) perché non vado in ferie?

 La tua inoltre non permetterebbe 
a-...@here.com
 o 
a....@here.com
...come sopra... dalle mie parti mi darebbero dell'invornito...
P.S. ho visto che non utilizzi \w. Se non ricordo male è sì stato aggiunto
in seguito, ma non credo così lontano nel tempo da doversi preoccupare di
compatibilità all'indietro. O sbaglio?