In un form AJAX possiamo evitare che l'utente invii due volte gli stessi dati sfruttando jQuery e il web storage.
La soluzione è la seguente:
(function( $ ) {
$( document ).ready(function() {
var $form = $( "#form" ),
$output = $( "#output" ),
storage = window.sessionStorage;
if( storage.getItem( "email" ) !== null ) {
// Visualizziamo il valore appena inviato
$output.text( "Value: " + storage.getItem( "email" ) );
}
$form.on( "submit", function( e ) {
e.preventDefault();
var email = $( "#email" ).val();
if( storage.getItem( "email" ) !== null ) {
var storedEmail = storage.getItem( "email" );
if( email === storedEmail ) {
// Il valore è già stato inviato
$output.text( "Value already submitted" );
}
} else {
// Memorizziamo il valore inserito
storage.setItem( "email", email );
}
});
});
})( jQuery );