Newsgroup: it.comp.lang.javascript
Titolo: Controllare i campi di un form onSubmit: dove sbaglio?

Chiedo scusa per la mail lunga...
Ho un form con campi di diverso tipo (text, select e radio).
OnSubmit lancio una serie di funzioni che si richiamano l'un l'altra: la
prima lancia la seconda, la quale restituisce true solo se č vera la
terza, la quale restituisce true solo se č vera la quarta e cosě via.
Inizialmente credevo che non funzionasse con onSubmit, ma ho provato a
lanciare la funzione del controllo mail anche con onBlur e non ha
funzionato, quindi credo che, essendo la prima della serie, il problema
sia lei.
Questi sono i 3 tipi di funzione:
// questa č l'unica che controlla un campo text, quindi la metto tale e
quale
function ctrl_mail()
	{
	document.form[0].email.value = mail
	n = mail.indexOf('@')
	m = mail.indexOf('.')
		{
		if (n>0 && m>1) 
			{
			ctrl_C6(); return true;
			}
		else
			{
			alert('L\'indirizzo e-mail non č corretto'); return false;
			}
		}
	}
// queste altre, invece, si ripetono per ogni select e ogni array di
elementi radio
// nel codice quella scritta dopo chiama la precedente... non si sa mai
che facciano casino per l'ordine :)
function ctrl_PC()
	if (document.form[0].TipoComputer.nessuno.selected)
// ho dato ad una option vuota il nome «nessuno» per facilitarmi le cose
:)
		{
		alert('Non hai specificato il tipo di computer utilizzato'); return
false;
		}
	else
		{
		if (ctrl_RAM())
			{
			return true;
			}
		}
function ctrl_C6()
	{
	if	(document.form[0].ReleaseC6[0].value == checked ||
		document.form[0].ReleaseC6[1].value == checked ||
		document.form[0].ReleaseC6[2].value == checked ||)
		{
		 if (ctrl_PC())
		 	{
		 	return true;
		 	}
		}
	else
		{
		alert('Non hai specificato la versione di C6 che usi'); return false;
		}
	}
//
//
//
La cosa strana č che né Netscape né Explorer danno errore nel
caricamento della pagina, perň le funzioni non partono, mah... la vita č
piena di mistero...
Confido nella vostra genialitŕ... che a me manca, a quanto pare ;Ţ
-- 
Miao
Vally (aka gattadalegare)
-------------------
sito personale: 
http://utenti.tripod.it/gattadalegare/
e-mail lavoro: 
val...@i-side.com
e-mail personale: 
lagat...@tin.it
e-mail secondaria: 
valeri...@hotmail.com
#ICQ - gatta@work - 62405792
---------------------------------------------

a mail lunga... risposta altrettanto lunga.... beh non avevo il tempo di
controllare il tutto... e allora ti copio qui sotto il codice (html + JS)
di una form con tutti i suoi controlli... si tratta solo di mettere i nomi
giusti al posto giusto..
se hai problemi... fai un fischio
ciao
aldo
P.S. accidenti a te... il tuo sito mi ha controllato TRE volte (dicesi 3)
la cache di netscape e ha deciso che io non posso settarla a zero (ma chi
sei?) dopo di che'... visto che non gli piaceva la mia versione di quick
time... mi ha spedito sul sito della apple a scarcarmene una versione
aggiornata.... ma siamo impazziti?
stasera sono buono e ti copio lo stesso il codice... :))))
togli gli eventuali a capo messi indebitamente dalla mail prima di utilizzarlo
--------------------------------
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"
http://www.w3.org/TR/REC-html40/loose.dtd
">
<HTML>
<HEAD>
<META HTTP-EQUIV="content-type" CONTENT="text/html;charset=iso-8859-1">
<TITLE>controllo Form</TITLE>
<SCRIPT TYPE="text/javascript"><!--
/****************************************************************
FUNZIONI CONTROLLAFORM()
Script from 
sup...@gruppo4.com
 - 
http://www.gruppo4.com
You can use this code if you leave this message
****************************************************************/
function controllaForm(myForm){
var formAlert = false;
var msgAlert = ""
/*per ogni <INPUT TYPE='text'>*/
if (myForm.myText.value== ""){
var formAlert = true;
var msgAlert = msgAlert + "TESTO\r";
}
else{var msgAlert = msgAlert + ""}
/*per un <INPUT TYPE='text'> corrispondente ad un campo mail*/
var validMail='true'
var badChars = " /:,;"
var email = myForm.myMail.value
/*la mail non puo' essere vuota*/
if (email== ""){validMail='false'}
/*non deve contenere caratteri non validi*/
for (i=0; i<badChars.length; i++) {
badChar = badChars.charAt(i)
if (email.indexOf(badChar,0) > -1) {validMail='false'}
}
/*deve contenere una e una sola @*/
atPos = email.indexOf("@",1)
if (atPos == -1) {validMail='false'}
if (email.indexOf("@",atPos+1) != -1) {validMail='false'}
/*deve contenere un "." e almeno due caratteri dopo il "."*/
periodPos = email.indexOf(".",atPos)
if (periodPos == -1) {validMail='false'}
if (periodPos+3 > email.length){validMail='false'}
if (validMail=='false'){
var formAlert = true;
var msgAlert = msgAlert + "MAIL\r";
}
else{var msgAlert = msgAlert + ""}
/*per ogni <INPUT TYPE='checkbox'>*/
var checkMyCheck='false'
for (i = 0; i < myForm.myCheck.length; i++) {
if (myForm.myCheck[i].checked=="1"){checkMyCheck='true'}
}
if (checkMyCheck=='false'){
var formAlert = true;
var msgAlert = msgAlert + "CHECKBOX\r";
}
else{var msgAlert = msgAlert + ""}
/*chiusura della funzione*/
if (formAlert){
alert("Non sono stati compilati correttamente i campi: \r"+ msgAlert);
return false
}
}
//-->
</SCRIPT>
</HEAD>
<BODY>
<!-- form -->
<DIV ALIGN="center">
<FORM METHOD="post" NAME="myForm" ONSUBMIT="return controllaForm(this)">
<TABLE CELLPADDING="4" CELLSPACING="0" BORDER="2">
<TR>
<TH CLASS="true">MY FORM</TH>
</TR>
<TR>
<TD>Text<BR>
<INPUT TYPE="text" NAME="myText" SIZE="40">
</TD>
</TR>
<TR>
<TD>Mail<BR>
<INPUT TYPE="text" NAME="myMail" SIZE="40">
</TD>
</TR>
<TR>
<TD CLASS="true">CheckBox:<BR>
<INPUT TYPE="CheckBox" NAME="myCheck" VALUE="01">check 01<BR>
<INPUT TYPE="CheckBox" NAME="myCheck" VALUE="02">check 02<BR>
<INPUT TYPE="CheckBox" NAME="myCheck" VALUE="03">check 03<BR>
</TD>
</TR>
<TR>
<TH>
<INPUT TYPE="Reset" NAME="Reset">
<INPUT TYPE="Submit" NAME="Invia">
</TH>
</TR>
</TABLE>
</FORM>
</DIV>
</BODY>
</HTML>
  ------------------------------------------------------------------------
   Chiedo scusa per la mail lunga...
   Ho un form con campi di diverso tipo (text, select e radio).
   OnSubmit lancio una serie di funzioni che si richiamano l'un l'altra: la
   prima lancia la seconda, la quale restituisce true solo se è vera la
   terza, la quale restituisce true solo se è vera la quarta e così via.
ecc.
--
Posted from 
DNS.GRUPPO4.COM
 [193.70.107.66] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

         document.form[0].email.value = mail
Che ne diresti di provare "mail = document.form[0].email.value" ?
Ciao, Riccardo
-----------------------------------------------------------------------
http://www.bottegasanlorenzo.it
http://www.jsdir.com
Need a JavaScript password?
http://www.agora.it/Ri.Riccardi/ingresso.html
-----------------------------------------------------------------------
"Any sufficientely advanced technology is indistinguishable from magic"
Arthur Charles Clarke
-----------------------------------------------------------------------
.
.
.
.
.
 . . . . . . I Fantastici 4 stanno arrivando . . . . . .

Posso provare... ma che differenza fa?
Comunque tentar non nuoce :)
Grazie
Vally
Riccardo Riccardi ha scritto:

-- 


 togli gli eventuali a capo messi indebitamente dalla mail prima di utilizzarlo
Don't worry: uso Netscape Messenger che mi va a capo dopo un'infinità di
spazio ;)
Ancora grazie: hai salvato la mia sanità mentale :)


 >
Fa differenza perché tu devi controllare il valore di document.form[0].email.value.
Ma se scrivi document.form[0].email.value = mail NON assegni a "mail" il valore di "document...." ma ASSEGNI A "document..." IL VALORE DI "mail", che all'inizio č una stringa nulla...... in pratica
CANCELLI la TEXTBOX "mail" del form.... e poi che vuoi controllare piů? :-)))


  . . . . . . I Fantastici 4 stanno arrivando . . . . . .
-- 


 Okkavolo! Non ci avevo pensato! :-o
Eh eh :-)
Non crucciarti, se potessimo mettere in fila tutte le ore che perdiamo (tutti credo :-) a cercare errorini "stupidi" (e chiamli stupidi!!!!) come questo e qualcuno ce le pagasse 1.000 lire l'una.....
gireremmo tutti in Ferrari.
Sherlock Holmes più o meno diceva:
"In un'indagine elimina tutto l'impossibile. Quel che resta, per quanto improbabile, è la soluzione".
