Ciao ragazzi, avrei bisogno di un consiglio.
Ho una form che viene validata con validator di JQUERY, e uno script che esegue un AJAX che vada ad inserire i dati nel DB.
Il problema è che quando clicco sul pulsante del submit, vengono eseguiti in cascata e, mentre il validator mi dice che i campi non sono corretti, l'AJAX mi restituisce errore perché ha fatto l'inserimento e il PHP che richiama gli da errore. Come posso fare in modo che l'AJAX si carichi solo dopo che il VALIDATOR ha fatto il suo compito? Oppure, posso sostituire
codice:
submitHandler: function(form) { form.submit();
}
per richiamare Ll'AJAX?
validator.js
codice:
$().ready(function() { "use strict";
// Selezione form della pagina index.html e definizione dei metodi di validazione
$("#formIndex").validate({
// Definiamo le nostre regole di validazione
rules: {
'cerca': {
//Definiamo il campo mail come obbligatorio
required: true,
},
},
// Personalizzimao i mesasggi di errore
messages: {
'cerca': "Dicci cosa vorresti cercare",
},
// Settiamo il submit handler per la form
submitHandler: function(form) {
form.submit();
}
});
// Selezione form della pagina registrati.html e definizione dei metodi di validazione
$("#formRegistrati").validate({
// Definiamo le nostre regole di validazione
rules: {
'email': {
//Definiamo il campo mail come obbligatorio
required: true,
// Definiamo il campo email come un campo di tipo email
email: true,
//Chiamata AJAX per controllare che la mail non sia già presente nel DB
remote: {
url: "validatorAjaxFormRegistrati.php",
type: "post"
}
},
'password': {
required: true,
// Settiamo la lunghezza minima e massima per il campo password
minlength: 6
},
'verificaPassword': {
//Verifico che entrambe le password siano uguali
required: true,
equalTo: '#password'
},
'date': {
//Verifico che si sia selezionato un giorno
required: true,
},
'privacy': "required"
},
// Personalizzimao i mesasggi di errore
messages: {
'email': {
required: "Inserisci la tua email",
email: "Inserisci un formato valido",
remote: "L'indirizzo email risulta già registrato"
},
'password': {
required: "Inserisci una password",
minlength: "Lunghezza minima 6 caratteri",
},
'verificaPassword': {
required: "Inserisci una password di verifica",
equalTo: "Le password non corrispondono"
},
'date': {
required: "Inserisci una data di nascita valida",
},
'privacy': {
required: "Clicca per accettare"
}
},
// Settiamo il submit handler per la form
submitHandler: function(form) {
form.submit();
}
});
});
ajax.js
codice:
$(document).ready(function() { "use strict";
//al click sul bottone del form
$("#conferma").click(function(){
alert("mi ha chiamato");
//associo variabili
var email = $("#email").val();
var password = $("#password").val();
//chiamata ajax
$.ajax({
//imposto il tipo di invio dati (GET O POST)
type: "POST",
//Dove devo inviare i dati recuperati dal form?
url: "injectionAjaxRegistrati.php",
//Quali dati devo inviare?
data: "email=" + email + "&password=" + password,
dataType: "html",
//Inizio visualizzazione errori
success: function(msg)
{
$("#risultato").html(msg);
},
error: function()
{
alert("ERRORE... SI PREGA DI RIPROVARE!");
}
});
});
});
vorrei che il
codice:
$("#conferma").click(function(){
diventasse una funzione e che nell'handler venisse richiamata. Che ne dite?