+ Rispondi al messaggio
Visualizzazione dei risultati da 1 a 4 su 4

[Javascript]Funzione per invio form

  1. #1
    Vanessa non  in linea Scolaretto
    Ciao a tutti,
    chi di voi sa dirmi dove sbaglio???? ci sto sbattendo la testa da un bel p!
    Sicuramente una svista, ma capita una cosa alquanto bizzarra.
    Il codice sosttostante viene eseguito in una pagina ASP che al click di un pulsante va a
    chiamare una funzione che mi indiriza ad un'altra pagina dove effettuo un inserimento.
    Ho constatato che alcune volte, non s perch, questa funzione viene eseguite 2-3 volte.
    Infatti quando faccio un inserimento nel db mi trovo 2 o tre record inseriti dello stesso tipo
    Questo perch certamente la pagina che effettua l'inserimento "Pagina.asp" viene richiamata + volte!
    (di questo ne sono certa perch ho implementato una variabile di sessione che mi indica quante volte la pagina "Pagina.asp" viene processata)

    codice HTML:
    <script language="javascript">
    
    	function Conferma(frm){
    		
    		if (document.frm.txt1.value==""){
    			alert('errore')
    			return false
    		}
    
    
              document.frm.submit()
    	  return true
    	}
    	
    </script>
    
    <form name="frm" action="Pagina.asp"  onsubmit="return Conferma(this)" method="post">
    
    	<TABLE>
    	  <tr>
                  <td>		
    		<input type="image" src="images/conferma.jpg" onclick="return Conferma(this)">
    	      <td>
    	   </tr>
            </table>
    
    </form>
    Ultima modifica di Master85; 08-12-2006 13:43 

  2. #2
    L'avatar di Master85
    Master85 non  in linea Moderatore Globale Ultimo blog: Eclipse: Un IDE per PHP e Python
    Hai due possibilita':

    1. Intercetti l'onsubmit della form;
    2. Intercetti l'onclick di un bottone e invii la form.

    Nel tuo caso hai scelto entrambe le possibilita', cosa accade ?
    L'Onclick richiama l'Onsubmit, e come risultato, l'errore da te proposto

    Elimina l'onsubmit della form e migliora lo script in questo modo:

    <script language="javascript">
    
    	function Conferma(frm){
    		
    		if (document.frm.txt1.value==""){
    			alert('errore');
    			return false;
    		}else{
    			document.frm.submit();
    		}
    	}
    	
    </script>
    

  3. #3
    Vanessa non  in linea Scolaretto
    haaa!!! mi hai battuta sul tempo!!

    Tu mi hai detto di migliorare il codice in questo modo..

    codice HTML:
    <script language="javascript">
    
    	function Conferma(frm){
    		
    		if (document.frm.txt1.value==""){
    			alert('errore');
    			return false;
    		}else{
    			document.frm.submit();
    		}
    	}
    	
    </script>
    ma per quale motivo se metto "document.frm.submit()" quindi senza ";" e tolgo l'Onsubmit sulla form ...mi fa le stessa identica cosa, ossia, mi inserisce sempre 2 volte?
    Invece se lascio "document.frm.submit()" vado a capo metto "return false"
    va tutto bene ..il ";" fa la differenza???
    Grazie Master!
    Ultima modifica di Master85; 09-12-2006 01:05 

  4. #4
    L'avatar di Master85
    Master85 non  in linea Moderatore Globale Ultimo blog: Eclipse: Un IDE per PHP e Python
    Ciao Vanessa,
    scusa, ma e' evidente che i miei suggerimenti siano stati leggermenti *fuorvianti*, ho dedicato poca attenzione al tuo script che, guardandolo bene propone un utilizzo improprio dell'identificatore "this" ed e' proprio questo che potrebbe causare l'errore, *this* identifica l'elemento stesso e non come hai proposto tu, la form, ovviamente la funzione invia comunque la form poiche', *ironia* della sorte hai assegnato al parametro della funzione lo stesso nome della form "frm". Inoltre "return false;" serve a poco, viene utilizzato esclusivamente nel momento in cui si cerca di intercettare l'evento onsubmit della form, in quel caso, se si dovesse riscontrare un errore nella compilazione della form, il "return false" blocca l'invio della form.

    Ho scritto il codice funzionante ex-novo:

    codice HTML:
    <html>
    	<head>
    		<title>Invio Form</title>
    		<script type="text/javascript" language="javascript">
    			function conferma(){
    				if(document.myForm.myInput.value == ""){
    					alert("Compila tutti i campi");
    				}else{
    					document.myForm.submit();
    				}
    			}
    		</script>
    	</head>
    	<body>
    		<form name="myForm" method="post" action="pagina.htm">
    			<input type="text" name="myInput" />
    			<br />
    			<input type="button" value="invia dati" onclick="conferma()" />
    		</form>
    	</body>
    </html>

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. [Javascript]Gestione Radio in un FORM e controllo con Javascript
    Da janfri nel forum HTML, CSS e JavaScript
    Risposte: 1
    Ultimo Post: 26-06-2008, 08:40
  2. [Javascript]funzione per 2 pulsanti in un form
    Da onsitus nel forum HTML, CSS e JavaScript
    Risposte: 61
    Ultimo Post: 06-01-2008, 18:05
  3. [Javascript]Richiamo funzione javascript
    Da giangi80p nel forum HTML, CSS e JavaScript
    Risposte: 1
    Ultimo Post: 05-09-2006, 20:59
  4. [HTML,Javascript]Invio valori tra pagine diverse
    Da giangi80p nel forum HTML, CSS e JavaScript
    Risposte: 2
    Ultimo Post: 04-09-2006, 10:00
  5. [Javascript]Richiamo funzione per controllo dati della form
    Da giangi80p nel forum HTML, CSS e JavaScript
    Risposte: 2
    Ultimo Post: 30-08-2006, 21:19