Un Evento Unico. 5 Sale. 27 Interventi. SEO, SOCIAL, E-Commerce, Mobile, Turismo.
CLICCA QUI e SCOPRI DI PIù X Chiudi
 
Forum GT: Condividiamo idee e conoscenza Forum GT: Condividiamo idee e conoscenza


Condividi questo contenuto nei Social Network:
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.


Vai indietro   Forum per Webmaster: Condividiamo Idee e Conoscenza > Sviluppo e Gestione siti web > Scripting lato client
Benvenuto! Forum Regole FAQ Lista utenti Calendario Segna come letti


Rispondi
 
LinkBack Strumenti di discussione
Vecchio 26-09-06, 13:46   #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>
e poi all'interno del modulo

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
}
e ho risolto il problema, form non più inviato se si è raggiunto il limite e indirizzamento verso altra pagina

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">
&nbsp;</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.
Redart non in linea   Rispondi citando
Vecchio 27-09-06, 00:38   #2 (permalink)
Moderatore
 
L'avatar di claudioweb
 
Data di registrazione: Jul 2005
Ubicazione: Salento
Messaggi: 3,671
Invia un messaggio tramite ICQ a claudioweb Invia un messaggio tramite Skype a claudioweb
Il problema è di facile soluzione se affidi il submit del form sempre a javascript

Codice:
document.NomeForm.submit();
Maggiori informazioni qui:
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.

__________________

Twitter un giorno, quando avrò tempo, inizierò ad usarlo di più
claudioweb non in linea   Rispondi citando
Vecchio 27-09-06, 09:58   #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
Redart non in linea   Rispondi citando
Vecchio 27-09-06, 11:49   #4 (permalink)
Moderatore
 
L'avatar di claudioweb
 
Data di registrazione: Jul 2005
Ubicazione: Salento
Messaggi: 3,671
Invia un messaggio tramite ICQ a claudioweb Invia un messaggio tramite Skype a claudioweb
Nella pagina che ti ho indicato ci sono degli esempi completi, prova a trarre spunto da quel codice ed adattalo alla tue esigenze.

Come prima cosa ti consiglio di usare correttamente le virgolette
Codice:
name="form1"
e non
Codice:
name=form1
__________________

Twitter un giorno, quando avrò tempo, inizierò ad usarlo di più
claudioweb non in linea   Rispondi citando
Vecchio 02-10-06, 19:41   #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
Redart non in linea   Rispondi citando
Vecchio 12-10-06, 17:13   #6 (permalink)
rdo
User
 
L'avatar di rdo
 
Data di registrazione: May 2005
Ubicazione: Nord Italia
Messaggi: 427
Invia un messaggio tramite MSN a rdo Invia un messaggio tramite Skype a rdo
Ciao!
Redart per favore potresti postare il codice di un esempio? Perchè ho provato ma nn viene niente...

Grazie mille!
Paolo
rdo non in linea   Rispondi citando
Vecchio 25-10-06, 18:11   #7 (permalink)
rdo
User
 
L'avatar di rdo
 
Data di registrazione: May 2005
Ubicazione: Nord Italia
Messaggi: 427
Invia un messaggio tramite MSN a rdo Invia un messaggio tramite Skype a rdo
Cè nessuno?
rdo non in linea   Rispondi citando
Rispondi
Tags: , , , , ,



Strumenti di discussione

Regole di scrittura
Non puoi postare nuove discussioni
Non puoi rispondere alle discussioni
Non puoi allegare file
Non puoi editare i tuoi post

BB code is Attivo
smilies è Attivo
[IMG] il codice è Attivo
Il codice HTML è Disattivato
Trackbacks are Attivo
Pingbacks are Attivo
Refbacks are Disattivato
Vai al forum



Tutti gli orari sono GMT +3. Attualmente sono le 20:26.




Forum GT - © 2004-2009 GT idea S.r.l P.iva 02418200800 - Privacy/Disclaimer

SEO by vBSEO 3.2.0 ©2008, Crawlability, Inc.