Visualizzazione risultati 1 fino 9 di 9

Discussione: Svuotare form dopo l'invio

  1. #1
    L'avatar di foreach
    foreach non è connesso Altervistiano Junior
    Data registrazione
    11-06-2008
    Residenza
    3 metri sotto terra
    Messaggi
    501

    Predefinito Svuotare form dopo l'invio

    Salve a tutti,

    ho una pagina web dove c'è un form che punta ad un'iframe nascosto.

    Questo form inserisce i dati nel db, ma questo non importa.

    Vorrei sapere come far svuotare il form con form.reset() o con qualcos'altro DOPO aver inviato i dati, senza ricaricare la pagina. Ho provato con l'evento onsubmit, ma vedo che questo viene chiamato prima dell'invio, e nella lista degli eventi DOM non trovo nessun evento che soddisfi la mia richiesta.

    C'è un modo per far eseguire il reset del form dopo il suo invio, dato che invia i dati in un'iframe nascosto?




    Grazie,
    foreach
    Codice PHP:
    foreach($vettore as $chiave => $valore) {
    echo 
    "Ciao";


  2. #2
    karl94 non è connesso Staff AV
    Data registrazione
    03-10-2005
    Messaggi
    17,745

    Predefinito

    Potresti provare ad usare setTimeout dentro al listener onsubmit. Ma perché non inviare i dati con un oggetto XMLHttpRequest?

  3. #3
    L'avatar di foreach
    foreach non è connesso Altervistiano Junior
    Data registrazione
    11-06-2008
    Residenza
    3 metri sotto terra
    Messaggi
    501

    Predefinito

    Mi puoi fare un esempio usando XMLHttpRequest? Non sono tanto pratico con XML.

    Usando setTimeout aspetta 3 secondi (ho messo 3000), esegue la funzione di svuotamento form, e poi tenta invano di inviare il form ormai vuoto all'iframe.


    Missà che non va setTimeout, e purtroppo mi serve questo form.


    Non ci sono altre soluzioni?



    Grazie,
    foreach
    Codice PHP:
    foreach($vettore as $chiave => $valore) {
    echo 
    "Ciao";


  4. #4
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,683

  5. #5
    karl94 non è connesso Staff AV
    Data registrazione
    03-10-2005
    Messaggi
    17,745

    Predefinito

    E poi col setTimeout non ho capito che hai fatto, dovresti solo cancellare nella funzione richiamata, non inviare.

  6. #6
    L'avatar di foreach
    foreach non è connesso Altervistiano Junior
    Data registrazione
    11-06-2008
    Residenza
    3 metri sotto terra
    Messaggi
    501

    Predefinito

    Scusate il ritardo ma ho avuto da lavorare troppo.

    Non posso mettere una durata fissa di tempo come timeout, perché la pagina può essere anche lenta a caricare.

    Però mi è venuta un'idea: e se io metto in form onsubmit questo?
    Codice PHP:
    this.submit(); this.reset(); return(false);
    Che ne dite? Potrebbe funzionare?



    Grazie,
    foreach
    Codice PHP:
    foreach($vettore as $chiave => $valore) {
    echo 
    "Ciao";


  7. #7
    karl94 non è connesso Staff AV
    Data registrazione
    03-10-2005
    Messaggi
    17,745

    Predefinito

    Citazione Originalmente inviato da foreach Visualizza messaggio
    Non posso mettere una durata fissa di tempo come timeout, perché la pagina può essere anche lenta a caricare.
    Appunto per questioni come queste non è una buona idea usare un modulo, su cui hai poco controllo ed è pensato per scopi differenti.
    Comunque nella funzione eseguita al timeout dovresti solamente svuotare i campi del modulo e basta. Non dovrebbe importare se vengono svuotati prima del caricamento della pagina di destinazione, in quanto la richiesta viene generata e mantenuta a parte al momento esatto dell'invio.
    Citazione Originalmente inviato da foreach Visualizza messaggio

    Però mi è venuta un'idea: e se io metto in form onsubmit questo?
    Codice PHP:
    this.submit(); this.reset(); return(false);
    Che ne dite? Potrebbe funzionare?
    Potrebbe, prova.

  8. #8
    L'avatar di foreach
    foreach non è connesso Altervistiano Junior
    Data registrazione
    11-06-2008
    Residenza
    3 metri sotto terra
    Messaggi
    501

    Predefinito

    Scusa,

    non per darti fastidio, ma mi puoi fare un esempio concreto con qualsiasi metodo che funzioni, basta che non carico script esterni? Ho provato con la mia idea e con settimeout(), ma niente da fare... non sto capendo più niente, è la prima volta che mi succede.


    Grazie,
    foreach
    Codice PHP:
    foreach($vettore as $chiave => $valore) {
    echo 
    "Ciao";


  9. #9
    karl94 non è connesso Staff AV
    Data registrazione
    03-10-2005
    Messaggi
    17,745

    Predefinito

    Codice HTML:
    <!DOCTYPE html>
    <html>
    	<head>
    		<title>Test</title>
    	</head>
    	<body>
    		<form target="tg">
    			<input type="text" name="a" />
    			<input type="color" name="b" />
    			<button>Send</button>
    		</form>
    		<iframe name="tg"></iframe>
    		<script type="text/javascript">
    			var form = document.forms[0];
    			form.addEventListener("submit", function(e){
    				setTimeout(function(){form.reset()}, 0);
    			});
    		</script>
    	</body>
    </html>

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •