2012-11-27 15 views
9

La maggior parte di noi che utilizza moduli combinati con ajax probabilmente ha notato che l'input inviato dall'utente non viene salvato/suggerito dal browser nelle sessioni successive. Questa è una rovina quando si tratta di "accedere" alle pagine. Il browser di solito offre di salvare il nome utente/password, che è molto utile, ma con un modulo Ajax invia .... beh, sai, questo non succede.Modulo standard Invia vs Modulo Ajax Invia - Salva automaticamente browser/Suggerisci input utente

Ho visto questa domanda due volte qui e ancora nessuna risposta. Sono passati circa 9 mesi da quando è stato chiesto, e so che ci sono molte persone intelligenti qui intorno. Quindi ... Ho deciso di far risorgere questa domanda.

Cosa possiamo fare per risolvere questo? Possiamo ingannare il browser in qualche modo?

Sono disposto a lavorare avanti e indietro su questo poiché so che sarebbe bello avere una soluzione funzionante per tutti noi da utilizzare.

soluzione finale in base al largo la risposta da slashingweapon

HTML (Grazie Man!) - Utilizzo di un pulsante personalizzato a presentare, insieme con nessuna forma 'azione' o 'metodo', solo ajax

<form id="signin"> 

    <label for="username">Username</label> 
    <input type="text" id="username" name="username" /> 

    <label for="password">Password</label> 
    <input type="password" id="password" name="password" /> 

    //Custom Styled Submit Button 
    <img id="submit" class="form_button" src="btn_txt_sign_in.png" alt="Sign In" tabindex="3" /> 

    //Hidden Standard Form Submit Button 
    <input id='trigger' type='submit' style='display:none;' /> 

</form> 

JQuery

// Bind a click to the Custom Submit Button 
$('#submit').click(function() { 
    //Trigger a Click on the Hidden Standard Form Submit 
    $('#trigger').click(); 
}); 

// Detect when the form attempts to be submitted 
$('#signin').submit(function(e){ 
    // Prevent Standard Form Submission 
    e.preventDefault(); 
    // Perform Function containing Ajax Submission instead 
    submit_signin(); 
}); 

// Ajax Submission 
function submit_signin() { 
    //My Ajax Call.... 
} 
+0

Come stai inviando i tuoi moduli? Associazione all'evento 'submit' del form e usig AJAX funziona per me ... –

+0

@ JanHančič Sto usando serialize per prelevare i dati dal modulo e pubblicare tramite ajax. Non sto utilizzando un "metodo" o "azione" per il modulo stesso, poiché la pagina non deve essere ricaricata o spostarsi su un'altra pagina. I moduli sono essenzialmente usati per acquisire input e Ajax viene utilizzato per inviare i dati a un PHP e restituire i risultati in modo dinamico. – VIDesignz

+0

Penso che quello che Jan stava chiedendo è, quale evento stai usando per indicare l'invio del modulo? Stai usando un evento di invio? O un evento clic sul pulsante? – slashingweapon

risposta

8

Quando si fa clic su qualsiasi pulsante del tipo submit, viene inviato il modulo di inclusione. Puoi scegliere di gestire l'evento di invio anziché l'evento di clic del pulsante. Ecco un esempio:

$('#demoForm').submit(function(evt) { 
    evt.preventDefault(); 
    var data = $(this).serialize(); 
    alert(data); 
});​ 

C'è un Fiddle anche per te.

Catturando l'evento successivo, si garantisce che almeno alcuni browser abbiano la possibilità di memorizzare i dati del modulo per futuri auto-riempimenti.

+0

Questo ha senso ... è importante che io utilizzi l'input di invio o il pulsante di invio? Lo prendo fintanto che sto usando type = 'submit' Dovrei essere bravo ... corretto? Presumo anche che potrei usare un pulsante/clic personalizzato per attivare il pulsante di invio ... – VIDesignz

+0

Ho intenzione di implementarlo più avanti e vedere i risultati. Accetterò la risposta se tutto andrà bene. E grazie! – VIDesignz

+0

Non penso che ci sia alcuna differenza reale tra l'elemento input e l'elemento button in questo caso. – slashingweapon