• User Newbie

    [JAVASCRIPT] Problema invio form

    Salve a tutti mi sono appena registrato e spero potrete aiutarmi a risolvere questo problema probabilmente semplice per voi.
    Il mio intento è quello di eseguire una funzione javascript prima dell'invio di un modulo ma alla premuta del tasto stesso che dovrebbe inviarlo, così nell'action ho messo javascript:mia_funzione() e in coda a questa le istruzioni:

    
    document.mio_form.action = "";
    document.mio_form.submit();
    
    

    Perché il form sia inviato però è necessario cliccare il bottone due volte. Sapete dirmi come mai o come poter risolvere?
    Grazie mille per l'aiuto.


  • ModSenior

    Dovreti postare il codice html della tua pagina.
    Con quelle sole righe è quasi impossibile dare una risposta. 🙂


  • Super User

    Ciao Giangians,
    prova a "catturare" l'evento onsubmit del form e non l'onclick del button.


  • User Newbie

    Ti ringrazio per il suggerimento, purtroppo però non posso applicarlo al mio caso perché io ho bisogno di eseguire un controllo sui dati inseriti nel form e di inviarlo solo nel caso in cui il controllo sia superato. Con l'onSubmit, superato o no i dati sarebbero già stati inviati.
    Ecco il codice:

    
    <html>
    <head>
    <title>Nuova dissertazione</title>
    <link rel="stylesheet" href="Css/default.css" />
    <script type="text/javascript" language="javascript">
    function check_form() {
    	document.new_diss.action = "";
    	document.new_diss.submit();
    }
    
    </script>
    </head>
    <body>
    <center>
    <h2 style="text-decoration:overline">Nuova dissertazione</h2>
    <div id="d">
    <form name="new_diss" id="new_diss" method="post" action="javascript:check_form()">
    <table style="border:dashed 1px #333333; width:300px">
    <thead>
    <tr>
    	<td>Titolo:</td>
    	<td><input id="titolo" name="titolo" type="text" /></td>
    </tr>
    <tr>
    	<td>Tesi:</td>
    	<td><input id="tesi" name="tesi" type="text" /></td>
    </tr>
    </thead>
    <tbody id="tbl">
    </tbody>
    <tfoot>
    <tr>
    	<td colspan="2" align="center">
    	<input class="new_obj" type="button" onClick="add_obj()" value="Nuovo oggetto" />
    	</td>
    </tr>
    <tr>
    	<td colspan="2">
    	<select name="obj_type" style="width:100%">
    		<option value="arg">Argomento</option>
    		<option value="argsec">Argomento secondario</option>
    		<option value="comm">Commento</option>
    	</select>
    	</td>
    </tr>
    <tr>
    	<td style="border-top:dashed 1px" colspan="2" align="right">
    		<input name="send" type="submit" value="Invia" />
    	</td>
    </tr>
    <tr>
    	<td style="border-top: dashed 1px" colspan="2" align="center">
    	</td>
    </tr>
    </tfoot>
    </table>
    </form>
    </div>
    </center>
    </body>
    </html>
    
    

    Se può esser causa del problema, faccio notare che la pagina si trova in una finestra aperta con window.open. Inoltre mi sono appena accorto che con FireFox funziona, è Google Chrome a dare problemi, mentre Explorer sembra addirittura rifiutarsi di aprire la pagina, per la quale ho usato questo collegamento:

    
    <a href="" onClick="javascript:window.open('new_diss.php','Nuova dissertazione','width=550,height=350')">Crea nuova dissertazione</a>
    
    

    Mi sfugge qualcosa?


  • User Newbie

    Ho però provato a fare come tu avevi inteso che avessi fatto, ossia ho tolto la chiamata della funzione dall'action e l'ho messa nell'onClick. Così funziona, grazie per l'ispirazione 🙂
    Ma prima cosa non andava? E cosa potrei fare per IE? Ancora grazie mille.


  • Super User

    Se inserisci una funzione javascript nell'attributo onsubmit del form viene eseguita prima che i dati vengano inviati. L'importante è ritornare false nel caso non si vuole che il form invii i dati.