Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2013
    residenza
    Bologna
    Messaggi
    31

    Jquery validator e chiamata a funzione esterna

    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?

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2013
    residenza
    Bologna
    Messaggi
    31
    Ho trovato la soluzione, semplice in realtà, anche se credo non sia la migliore. Posto il risultato affinché sia utile ad altri:

    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) {
                 
    	//VIENE ESEGUITA UNA CHIAMATA AJAX PER L'INSERIMENTO DEI DATI NEL DB CHE RESTITUISCE UN MESSAGGIO DI CONFERMA O DI ERRORE
    
    
        //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: "inserisciDatiDB.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!");
          }
        });        }
        });
    });

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.