![]() |
![]() |
|
| Condividi questo contenuto nei Social Network: |
|
Tweet |
|
|
|
Ti stiamo aspettando: Registrati subito e gratis. Entra a far parte di una delle comunità più attive in Italia. Se hai dimenticato i tuoi dati li puoi recuperare subito. |
||||
|
|||||||||
|
|
LinkBack | Strumenti di discussione |
|
|
#1 (permalink) |
|
User
Data di registrazione: Sep 2006
Messaggi: 19
|
Concatenare 2 funzioni di controllo modulo JavaScript in onsubmit
Salve,
riprendo un problema emerso in una discussione chiusa Ho avuto questo problema: non riuscivo a capire come racchiudere in onsubmit 2 funzioni di controllo del modulo prima di inviarlo la prima per controllare se risultavano inseriti i valori nei campi la seconda per evitare l'invio del form più volte da stesso utente claudioweb mi ha suggerito di concatenare le 2 funzioni con un'altra del tipo: Codice:
<script type="text/javascript" language="javascript">
<!--
function controllo()
{
verify();
validate(form1);
}
//-->
</script>
Codice:
<form method=post action=pagina.php name=form1 onsubmit="controllo()"> ho fatto come indicato, ho provato ma succede questo: raggiunto il limite di invio posto ad esempio a 2 (ma vale anche se diverso da 2) succede che dopo aver cliccato su "INVIA" l'alert dei cookie si attiva e, dopo aver chiuso il box alert, il form viene inviato ugualmente e finisco nella pagina php dove è inserito il codice per l'invio mail e i ringraziamenti ho fatto una piccola modifica nella funzione validate() per il controllo dei cookie inserendo dopo l'alert("Form già inoltrato, non è possibile inviarlo nuovamente.") Codice:
{form_registra.action='graziegiàfatto.php';
}
return false
}
resta però un grosso problema legato alla prima funzione della verifica preventiva dei campi se ad esempio un campo è vuoto, e clicco su "INVIA" si attiva il box alert ma chiudendolo, invece di restare sulla stessa pagina e avere la possibilità di riempirlo come accadeva prima vengo subito indirizzato nella pagina php dove è inserito il codice per l'invio mail e i ringraziamenti praticamente la verify() non funziona come dovrebbe ecco un esempio pratico con solo un paio di campi è un pò lunghetto: Codice:
<script language="JavaScript">
function verify() {
var d;
d = document.forms[0];
if (d.nome_azienda.value == '')
{
alert('Inserisci il nome della tua azienda');
return false;
}
if (d.via.value == '')
{
alert('inserisci la via');
return false;
}
if (d.autorizzo.checked)
{
}
else
{
alert('accosenti al trattamento dei tuoi dati');
return false;
}
return true;
}
var maxSubmits = 5
function validate(frm)
{
var totalSubmits = eval(GetCookie('TotalSubmissions'))
if (totalSubmits == null)
totalSubmits = 0
if (totalSubmits >= maxSubmits)
{
alert("Form già inoltrato, non è possibile inviarlo nuovamente.")
{form1.action='grazie.php';
}
return false
}
else
{
totalSubmits = totalSubmits + 1
BakeIt(totalSubmits, "TotalSubmissions")
return true
}
}
function ResetCounter()
{
BakeIt(0, "TotalSubmissions")
}
function BakeIt(cookieData, cookieName)
{
var days = 999;
var expires = new Date ();
expires.setTime(expires.getTime() + days * (24 * 60 * 60 * 1000));
SetCookie(cookieName, cookieData, expires);
}
function SetCookie(cookieName, cookieData, expireDate)
{
document.cookie = cookieName + "=" + escape(cookieData) + "; expires=" + expireDate.toGMTString();
}
function GetCookie(name)
{
var arg = name + "=";
var alen = arg.length;
var clen = document.cookie.length;
var i = 0;
while (i < clen) {
var j = i + alen;
if (document.cookie.substring(i, j) == arg)
return GetCookieVal (j);
i = document.cookie.indexOf(" ", i) + 1;
if (i == 0) break;
}
return null;
}
function GetCookieVal (offset)
{
var endstr = document.cookie.indexOf (";", offset);
if (endstr == -1)
endstr = document.cookie.length;
return unescape(document.cookie.substring(offset, endstr));
}
function controllo()
{
verify();
validate();
}
</SCRIPT>
<html>
<body>
<table width="640" border="0" cellspacing="0" cellpadding="0">
<form method=post action=fine.php name=form1 onsubmit="return controllo()">
<tr>
<td width="315" align="left" valign="top" class="testoSX">
<font face="Arial" size="2">
<br>
</font>
<table width="315" border="0" cellspacing="0" cellpadding="0">
<tr>
<td height="20" colspan="2" align="left" valign="top" class="testo">
</td>
</tr>
<tr>
<td width="165" class="testo">
<font face="Arial" size="2">Nome azienda</font></td>
<td width="150" class="testo"><font face="Arial"><input name="nome_azienda" type="text" class="noteInput" size="25"></font></td>
</tr>
<tr bgcolor="#F8F8F8">
<td width="165" bgcolor="#FFFFFF" class="testo">
<font face="Arial" size="2">Via</font></td>
<td width="150" class="testo" bgcolor="#FFFFFF"><font face="Arial"><input name="via" type="text" class="noteInput" size="25"><font size="2">
</font></font>
</td>
</tr>
</table>
<p>
<font face="Arial" size="2">
<br> </font> </p>
<table width="315" border="0" cellspacing="0" cellpadding="0">
<tr bgcolor="#F8F8F8">
<td valign="middle" class="testo" bgcolor="#FFFFFF"><font face="Arial"><input name="autorizzo" type="checkbox" value="1" checked></font></td>
<td class="testo" bgcolor="#FFFFFF"><font face="Arial" size="2">Autorizzo il trattamento e la comunicazione
dei dati.</font></td>
</tr>
</table>
<p>
<font face="Arial" size="2">
<br> </font> </p>
<p align="center">
<font face="Arial">
<input name="submit" type=submit class="testoSmall" value=prosegui><font size="2">
</font></font>
</p> </td>
</tr>
</table>
</body>
</html>
come risolvere questo problema? Un saluto Claudioweb: usa il tag [code], altrimenti si capisce poco, grazie ![]() |
|
Ultima modifica di claudioweb : 26-09-06 14:34. |
|
|
|
|
|
|
|
|
#2 (permalink) |
|
Moderatore
|
Il problema è di facile soluzione se affidi il submit del form sempre a javascript
Codice:
document.NomeForm.submit(); http://www.javascript-coder.com/java...m-submit.phtml In questo modo, richiami solo una funzione che solo dopo aver fatto i controlli, se è tutto ok invia i dati. ![]() |
|
|
|
|
|
#3 (permalink) |
|
User
Data di registrazione: Sep 2006
Messaggi: 19
|
Ciao,
non ho ben capito come e dove inserire document.form1.submit(); inserendolo semplicemente nel codice javascript mi da errore dicendo che 'document.form1' è nullo o non è un oggetto ho fatto diverse prove ma non capisco dove sbaglio si deve creare una nuova funzione del tipo: function submitform() { document.form1.submit(); } ho provato ma non funziona oppure unirlo alla function controllo() o altro ancora? come modificare il codice HTML poi, se questo va modificato? Un saluto |
|
|
|
|
|
#5 (permalink) |
|
User
Data di registrazione: Sep 2006
Messaggi: 19
|
Problema risolto
Finalmente sono riuscito a trovare una soluzione
era piuttosto semplice ma quel link che mi avevi dato claudioweb mi è servito a poco, se non a confondermi le idee ecco la soluzione: in onsubmit si deve richiamare una sola funzione nel mio caso onsubmit="verify()" all'interno poi della funzione usata si fa un piccolo richiamo all'altra dicendo prima del return true if (altrafunzione()==false) { return false;} Spero di aver portato un piccolo contributo e di essere di aiuto a chi ha o avrà un problema simile al mio Ringrazio claudioweb per l'interesse e la disponibilità Un saluto |
|
|
|
| Tags: concatenare, controllo, funzioni, javascript, modulo, onsubmit |
| Strumenti di discussione | |
|
|