Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1

    Problema con la validazione di un form

    Questo è il form:

    codice:
    <form action="collaboratore.php" method="post" name="collaboraForm" onsubmit="if (!checkSubmit()) return false;">
    						<table style="border-collapse: separate; border-spacing: 10px; margin: 0 auto; text-align: left;">
    							<tr>
    								<td colspan="2" style="color: red; font-size: 75%; text-align: center;">* campo obbligatorio</td>
    							</tr>
    							<tr><td>
    </td><td>
    </td></tr>
    							<tr>
    								<td>Nome e Cognome<span>*</span>: </td>
    								<td><input type="text" size="22" maxlength="40" name="nome" /></td>
    							</tr>
    							<tr>
    								<td>Azienda: </td>
    								<td><input type="text" name="azienda" size="22" maxlength="40" /></td>
    							</tr>
    							<tr>
    								<td>Provincia<span>*</span>: </td>
    								<td><input type="text" name="provincia" size="22" maxlength="40" /></td>
    							</tr>
    							<tr>
    								<td>Citt&agrave;<span>*</span>: </td>
    								<td><input type="text" name="citta" size="22" maxlength="40" /></td>
    							</tr>
    							<tr>
    								<td>Qualifica<span>*</span>: </td>
    								<td><input type="text" name="qualifica" size="22" maxlength="40" /></td>
    							</tr>
    							<tr>
    								<td>Specializzato in<span>*</span>: </td>
    								<td><input type="text" name="specializzazione" size="22" maxlength="40" /></td>
    							</tr>
    							<tr>
    								<td>Tel / Cel<span>*</span>: </td>
    								<td><input type="text" name="telefono" size="22" maxlength="40" /></td>
    							</tr>
    							<tr>
    								<td>Email<span>*</span>: </td>
    								<td><input type="text" name="email" size="22" maxlength="40" /></td>
    							</tr>
    							<tr>
    								<td>Lascia un messaggio: </td>
    								<td><textarea cols="20" rows="5" name="messaggio"></textarea></td>
    							</tr>
    							<tr>
    								<td colspan="2" style="text-align: center;">
    									<input class="button" type="submit" name="collaboraConNoiInviato" value="Invia Richiesta" onclick="formSubmit();" /> <input  class="button" type="reset" name="cancella" value="Cancella" />
    								</td>
    							</tr>
    						</table>
    					</form>
    e questo è il codice per la validazione dei dati:

    codice:
    <script type="text/javascript" src="echeck.php"></script>
    	  	<script type="text/javascript">
    	  		function checkSubmit()
    	  		{
    	  			if (document.collaboraForm.nome.value.length < 4 || document.nome.value.length > 40)
    	  			{
    	  				document.alert('Il campo NOME deve essere composto da minimo 4 a massimo 40 caratteri.');
    	  				return false;
    	  			}
    	  			if (document.provincia.value.length < 4 || document.provincia.value.length > 40)
    	  			{
    	  				document.alert('Il campo PROVINCIA deve essere composto da minimo 4 a massimo 40 caratteri.');
    	  				return false;
    	  			}
    	  			if (document.citta.value.length < 4 || document.citta.value.length > 40)
    	  			{
    	  				document.alert('Il campo CITTA' deve essere composto da minimo 4 a massimo 40 caratteri.');
    	  				return false;
    	  			}
    	  			if (document.qualifica.value.length < 4 || document.qualifica.value.length > 40)
    	  			{
    	  				document.alert('Il campo QUALIFICA deve essere composto da minimo 4 a massimo 40 caratteri.');
    	  				return false; 
    	  			}
    	  			if (document.specializzazione.value.length < 4 || document.specializzazione.value.length > 40)
    	  			{
    	  				document.alert('Il campo SPECIALIZZAZIONE deve essere composto da minimo 4 a massimo 40 caratteri.');
    	  				return false;
    	  			}
    	  			if (document.telefono.value.length < 4 || document.telefono.value.length > 40)
    	  			{
    	  				document.alert('Il campo TEL / CEL deve essere composto da minimo 4 a massimo 40 caratteri.');
    	  				return false;
    	  			}
    	  			if (!echeck(document.email.value))
    	  			{
    	  				document.alert("L'email che hai inserito non è corretta.");
    	  				return false;
    	  			} 
    	  			return true;
    	  		}
    	  		
    	  		function formSubmit()
    	  		{
    	  			if (checkSubmit())
    	  			{
    	  				windows.open('collaboratore.php', 'risposta', 'width=300,height=300');
    	  				document.collaboraForm.submit();
    	  				document.collaboraForm.reset();
    	  			}
    	  		}
    	  	</script>
    Provando a inviare il form vuoto, il form viene inviato e non ricevo nessun messaggio d'errore.

    Dov'è che sbaglio?

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Se non lo testi con firefox fallo, ie non esegue un debug corretto
    prova cosi:
    codice:
    	function formSubmit()
    	  		}
    	  		
    	  		
    	  		{
    	  			function formSubmit()
    	  			{
    	  				windows.open('collaboratore.php', 'risposta', 'width=300,height=300');
    	  				document.collaboraForm.submit();
    	  				document.collaboraForm.reset();
    	  		}
    invece del return true alla fine metti il richiamo alla funzione submit e cambia il tasto submit con un button
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Ho scelto di mettere submit anziché button perché così, se la pagina viene eseguita su un browser che non supporta JS, allora il form viene inviato alla pagina PHP che esegue ugualmente i controlli.

  4. #4
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Allora cambia approcio procedendo nella action del form, credo che usando il submit il form venga inviato comunque non tenendo conto del onclick
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  5. #5
    Ho fatto qualche modifica.

    Ho tolto l'evento onclick dal pulsantesubmit e ho aggiunto al form l'evento onsubmit in questo modo:

    codice:
    <form action="collaboratore.php" method="post" name="collaboraForm" onsubmit="if (checkSubmit()) formSubmit(); else return false;">
    Ovviamente ho modificato anche la funzione formSubmit in modo che il controllo dei dati non venga eseguito due volte.

    codice:
    function formSubmit()
    	  		{
    	  			windows.open('collaboratore.php', 'risposta', 'width=300,height=300');
    	  			document.collaboraForm.submit();
    	  			document.collaboraForm.reset();
    	  		}
    Dal punto di vista logico mi sembra corretto ma non funziona. Quando il form viene inviato esegui la funzione checkSubmit() che controlla la validità dei dati inseriti e restituisce true se sono validi e false se non lo sono. Quindi se i dati sono validi, procedi con l'invio del form richiamando la funzione formSubmit() che invia la pagina a collaboratore.php aprendo una finestra popup. Se al contrario i dati non sono validi, allora non inviare il form.

    Provando a inviare il form bianco non mi appare nessuna alert box di quelle definite in checkSubmit() e il form viene inviato bianco .

    Non riesco proprio a capire dov'è che sbaglio .

  6. #6
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Ma fai come t'ho detto cosi lo richiami:
    onsubmit="return checkSubmit()">
    e nella stessa funzione alla fine cioè al true formSubmit();
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  7. #7
    Non funziona neanche così. E' come se la funzione checkSubmit() non venisse proprio eseguita.

  8. #8

  9. #9
    Utente di HTML.it
    Registrato dal
    Apr 2001
    Messaggi
    363
    Se non ho letto male il codice, hai fatto del casino con il pulsante:
    - Se è di tipo "submit" allora l'onClick=formSubmit() è ridondante.
    Solitamente quando si mette il pulsante Submit lo si associa soltanto all'evento onSubmit del tag form: http://javascript.blogsome.com/2007/...ubmit-example/

  10. #10
    Originariamente inviato da Squid70
    Se non ho letto male il codice, hai fatto del casino con il pulsante:
    - Se è di tipo "submit" allora l'onClick=formSubmit() è ridondante.
    Solitamente quando si mette il pulsante Submit lo si associa soltanto all'evento onSubmit del tag form: http://javascript.blogsome.com/2007/...ubmit-example/
    Originariamente inviato da Aegidius157
    Ho fatto qualche modifica.

    Ho tolto l'evento onclick dal pulsantesubmit e ho aggiunto al form l'evento onsubmit in questo modo:

    codice:
    <form action="collaboratore.php" method="post" name="collaboraForm" onsubmit="if (checkSubmit()) formSubmit(); else return false;">
    Ovviamente ho modificato anche la funzione formSubmit in modo che il controllo dei dati non venga eseguito due volte.

    codice:
    function formSubmit()
    	  		{
    	  			windows.open('collaboratore.php', 'risposta', 'width=300,height=300');
    	  			document.collaboraForm.submit();
    	  			document.collaboraForm.reset();
    	  		}
    Dal punto di vista logico mi sembra corretto ma non funziona. Quando il form viene inviato esegui la funzione checkSubmit() che controlla la validità dei dati inseriti e restituisce true se sono validi e false se non lo sono. Quindi se i dati sono validi, procedi con l'invio del form richiamando la funzione formSubmit() che invia la pagina a collaboratore.php aprendo una finestra popup. Se al contrario i dati non sono validi, allora non inviare il form.

    Provando a inviare il form bianco non mi appare nessuna alert box di quelle definite in checkSubmit() e il form viene inviato bianco .

    Non riesco proprio a capire dov'è che sbaglio .

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.