2015-05-08 13 views
5

Ho un modulo semplice, che chiede se sei sicuro di volerlo inviare.Il modulo jQuery non viene inviato dopo aver corretto la convalida non riuscita

$(document).ready(function(){ 
    $("form#myform").on('submit', function(e) 
    { 
     if (!confirm('Are you sure?')){ 
     e.preventDefault(); 
     } 
     else { 
     console.log("submitting..."); 
     } 
    }); 
}); 

Invia modulo, premi "ok" al prompt "sei sicuro", il modulo viene inviato correttamente.

--refresh pagina, slate-- pulito

Invia modulo, ha colpito annullare al "sei sicuro della programmazione". Il modulo non viene inviato, come previsto. Invia di nuovo il modulo, premi "ok" al prompt "sei sicuro", il modulo non viene ancora inviato, "invia ..." viene registrato nella console. Da questo momento in poi, il modulo non verrà mai inviato fino a quando non aggiorno la pagina e premo "ok" al prompt la prima volta.

Se sostituisco

e.preventDefault();

con

return false;

nulla cambia, esattamente lo stesso comportamento.

Sono completamente perplesso. Che cosa sto facendo di sbagliato?

modifica: Ecco un collegamento jsFiddle https://jsfiddle.net/8ac3Lgzg/. L'HTML e JavaScript in quel violino sono/esattamente lo stesso/come il codice che ho nel mio progetto. Il problema che ho descritto sopra NON si verifica quando viene eseguito su jsFiddle, ma nel mio progetto.

+0

Puoi pubblicare uno snippet di stack o jsFiddle che mostra il problema? – j08691

+0

Sei positivo che non si presenta? Hai controllato il registro delle richieste di rete? Questo può essere un problema di back-end. Il codice fornito non sembra contenere alcun problema. –

+0

il pulsante di invio ha il nome 'submit'? – atmd

risposta

-2

provare questo modo

function SendForm(){ 
    if (!confirm('Are you sure?')){ 
     return false; 
    } 
    else { 
     console.log("submitting..."); 
     return true; 
    } 
} 

messo la funzione sendForm nel pulsante di invio come questo

<input type="submit" value="submit" onclick="return SendForm();" /> 

ovviamente non visualizza nulla sulla console, perché quando si invia il modulo, il browser ricarica

0

Il tuo codice funziona perfettamente, ecco un jsFiddle che lo dimostra. Ho letteralmente copiato e incollato, ci deve essere qualche altro javascript che influenza il modulo da qualche parte sulla tua pagina.

jsFiddle link below 

http://jsfiddle.net/xbhvqvp7/1/

Inoltre potrebbe essere la pena di verificare l'nei registri di rete del browser per vedere se il modulo viene effettivamente presentata

+0

Ho postato un jsFiddle nell'OP, spiegando che il codice funzionava lì ma non nel mio progetto. Il modulo non viene inviato affatto (nulla nel registro di rete). Tuttavia, si fa un punto su altri javascript che potrebbero incasinarlo, che sto esaminando ora. – jsdude

0

Il problema si verifica a causa di un pezzo di codice un altro sviluppatore nella mia squadra ha scritto di cui non ero a conoscenza, che si attacca a ogni modulo e memorizza nella cache il risultato del gestore onSubmit. Poiché il mio modulo restituirebbe false in caso di mancata convalida, quel risultato sarebbe stato memorizzato nella cache per il successivo tentativo di invio anche se avesse superato la convalida.

Senza voler rompere il suo codice, la mia soluzione era quella di aggiungere un attributo al mio modulo, "no-cache", e ho aggiornato il suo metodo per verificare quell'attributo. Questo ha risolto il mio problema.

Grazie a tutti quelli che mi hanno aiutato, lo apprezzo molto!

Problemi correlati