Newsgroup: it.comp.lang.javascript
Titolo: form convalide e conferme

salve a tutti.
ho un problemino (ma va?) con un js, e non riesco a venirne a capo.
quando si invia un form viene chiamata una funzione di convalida che
verifica che ci sia scritto qualcosa nel primo campo altrimenti compare una
finestra di errore.
se il campo  e' verificato, si passa al campo 2, e se anche questo e'
verificato positivamente, si apre (/dovrebbe/) la pagina con il messaggio di
conferma.
o meglio prima si apre la solita finestra del browser che chiede se si vuole
inviare o annullare: dando l'ok (corrisponde al valore true, no?) dovrebbe
aprirsi la pagina con la conferma.
MA: non funge.
anzi, si apre la conferma solo se anullo l'invio (??).
ringraziandovi per un consiglio,
vi allego il js, precisandovi che nel tag form compare onSubmit="return
BinParei();"
function BinParei() {
 if (document.email.MESSAGGIO.value.length < 5) {
  alert("testo");
  document.email.MESSAGGIO.focus();
  return false;
  }
 if (document.email.NOME.value.length < 2) {
  alert("testo");
  document.email.NOME.focus();
  return false;
  }
 return true;
 parent.frames[1].location = "conferma.htm";
}

 MA: non funge.
Prova a mettere prima "parent..." e poi "return".
Altrimenti sistema la funzione di validazione perché quando fai return 
true; l'esecuzine della funzione si interrompe.
-- 
Ciao, Riccardo
------------------------------------------------------------------------
http://www.jsdir.com
 ---- Bring Your Site To Life!!!!
------------------------------------------------------------------------
http://www.dev2dev.it
 - La rete ha connesso nuove particelle - D2D006
------------------------------------------------------------------------
 ----> itALY = it <----

 true; l'esecuzine della funzione si interrompe.
ho eliminato il return, ma neanche questo funge.
e da bravo neofita ti chiedo: cosa intendi esattamente con "sistema la
funzione"?
dal punto di vista logica, return a parte, mi pare corretta, ma ovviamente
sbaglio.. :-)
grazie e ciao
lele

 sbaglio.. :-)
Sintatticamente si, ma si potrebbe ottimizzarla.
Cmq lascia perdere... ci rimetterai mano quando sarai più esperto.
In ogni caso, non ti suggerivo di eliminare il return true, bensi di 
spostarlo:
function BinParei() {
 if (document.email.MESSAGGIO.value.length < 5) {
  alert("testo");
  document.email.MESSAGGIO.focus();
  return false;
  }
 if (document.email.NOME.value.length < 2) {
  alert("testo");
  document.email.NOME.focus();
  return false;
  }
 parent.frames[1].location = "conferma.htm";
 return true;
}
Il fatto è che la conferma (mi sembra di capire che stai usando mailto: 
come action, non ha alcuna influenza con lo script, quella richiesta la 
fa il client di e-mail indipendentemente.
Quindi lo script non potrà mai sapere se uno ha accettato o rifiutato 
l'invio, ed allora tanto vale che cmq la pagina la apri nel frame prima 
di inviare la mail :-)


 come action, non ha alcuna influenza con lo script,
ah ecco e' qui che casca il mio asino, e con me sopra.
credevo che l'ok e l'annulla della finestra del mail-client restituissero
cmq il valore true e false allo script.
anche spostando il return true dopo il parent.etc non cambia il non
funzionamento: ovvero, la pagina non la carica proprio.
e proposito del rimetterci manoquando sarai piuu' esperto, non e' cha magari
mi dai un hintino, cha magari accellero i tempi :-)
ancora grazie,
lele