Newsgroup: it.comp.lang.javascript
Titolo: FormMail e JavaScript

Ciao a tutti.
Sto impazzendo dietro a un problema, che magari si risolve in un secondo.
Ringrazio subito chi mi vorra' dare una mano...
A questo link:
http://digilander.iol.it/carotoni/registrazione.html
ho inserito un Form che utilizza il CGI di digiland per inviarmi un
messaggio.
Nella stessa pagina c'e' un Java Script che mi fa il check del form dopo che
l'utente abbia eventualmente riempito i campi.
Ora, nel momento in cui clicco sul bottone di invio, il controllo passa allo
script CGI e il mio JS viene del tutto ignorato... In teoria la finestra si
dovrebbe chiudere da sola, dovrebbe aggiornare un cookie  e ricaricare una
pagina (l'opener, di cui vi sgravio) aggiornando dei dati, avendoli presi
dal form.
Come cakkio faccio a far eseguire tutto il mio script *prima* che il
controllo passi al submit del form?
Vi allego il codice se non avete voglia di farvi una navigata e vorrete
essere cosi' gentili da darmi una mano...
NB, se elimino l'action dal form, e quindi non chiamo in causa il CGI, il JS
funziona perfettamente.
Il form:
<form name="formRegistrazione"
action="
http://digiland.iol.it/servlet/formmail
" method="POST">
<input type="hidden" name="username" value="carotoni">
<table align="center" border="0">
<caption><h4>Registrazione</h4></caption>
 <tr>
  <td align="right" class="copyinfo">Nome:</td>
  <td><input type="text" size="20" name="nome"></td>
 </tr>
 <tr>
  <td align="right" class="copyinfo">Cognome:</td>
  <td><input type="text" size="25" name="cognome"></td>
 </tr>
 <tr>
  <td align="right" class="copyinfo">E-mail:</td>
  <td><input type="text" size="30" name="mail"></td>
 </tr>
 <tr>
  <td align="center" valign="middle"><input type="checkbox"
name="avvisami"></td>
  <td class="copyinfo">Se vuoi <b>ricevere</b> via <b>e-mail</b> l'avviso di
aggiornamento del sito, seleziona la casella qui a fianco...</td>
 </tr>
  <tr>
  <td colspan="2" align="center"><input type="submit" value="Clicca qui per
registrarti" onClick="return ceckForm()"></td>
 </tr>
</table>
<input type="hidden" name="oggetto" value="Messaggio dal sito: CaroToni
WebCaffe">
</form>
Il JS, che non viene eseguito:
function verificaCorrettezzaIndirizzo(valoreInput) {
    var trovataChiocciola = false
    var trovatoPunto = false
    var posizioneChiocciola = -1
    var posizionePunto = -1
    for (var i=0; i<=valoreInput.length; i++)
      if (valoreInput.charAt(i) == "@" ) {
          trovataChiocciola = true;
          posizioneChiocciola = i;
      }
    for (i=posizioneChiocciola; i<=valoreInput.length; i++)
      if (valoreInput.charAt(i) == ".") {
        trovatoPunto = true;
        posizionePunto = i;
      }
    if  ( (trovataChiocciola && trovatoPunto) && (posizioneChiocciola <
posizionePunto) )
  return true;
 else {
  alert("Attenzione! Non hai inserito un indirizzo e-mail valido.\nPer
favore, prova di nuovo...");
  document.formRegistrazione.mail.focus();
  return false;
    }
}
function ceckForm() {
 var welcomeMessage = "";
 var emailFieldOk = true;
 if ( (document.formRegistrazione.nome.value == "") &&
(document.formRegistrazione.cognome.value == "") ) {
  alert("Attenzione!\n\nSe vuoi registrarti devi inserire\nalmeno uno dei
campi tra:\nNome e Cognome!");
  emailFieldOk = false;
 }
 else {
  if (document.formRegistrazione.nome.value != "") {
   self.opener.nomeCompleto += document.formRegistrazione.nome.value;
   welcomeMessage += "Ciao, ";
  }
  if (document.formRegistrazione.cognome.value != "") {
   if (document.formRegistrazione.nome.value != "")
    self.opener.nomeCompleto += " ";
   else
    welcomeMessage += "Buongiorno Sig. ";
    self.opener.nomeCompleto += document.formRegistrazione.cognome.value;
  }
  welcomeMessage += self.opener.nomeCompleto;
  welcomeMessage += "!\nGrazie per esserti registrato...\n"
  if ( document.formRegistrazione.avvisami.checked &&
(document.formRegistrazione.mail.value == "") ) {
   alert("Attenzione, non posso mandarti le news via e-mail,\nse non
inserisci un indirizzo di posta elettronica...");
   document.formRegistrazione.mail.focus();
   emailFieldOk = false;
  }
  if (document.formRegistrazione.avvisami.checked) {
    welcomeMessage += "\n...riceverai notizia degli aggiornamenti\nal tuo
indirizzo e-mail: ";
   welcomeMessage += document.formRegistrazione.mail.value;
   welcomeMessage += "\n";
  }
  if (document.formRegistrazione.mail.value != "")
   emailFieldOk =
verificaCorrettezzaIndirizzo(document.formRegistrazione.mail.value);
  welcomeMessage += "\nBuona navigazione nel Caro'Toni' WebCaffe."
 }
 if (emailFieldOk) {
  alert(welcomeMessage);
  self.opener.location = "
http://www.carotoni.it/presentazione.html
"
  self.close();
 }
 return emailFieldOk;
}

 funziona perfettamente.
Non devi fare      onClick="return ceckForm()"    nel pulsante di submit, 
bensì nel tag FORM in questo modo:
<FORM ... ACTION....  onSubmit="return ceckForm()">
-- 
Ciao, Riccardo
------------------------------------------------------------------------
http://www.jsdir.com
 ---- Bring Your Site To Life!!!!
------------------------------------------------------------------------
http://www.dev2dev.it
 - La rete ha connesso nuove particelle - D2D006
------------------------------------------------------------------------
 ----> itALY = it <----