2012-09-12 4 views
1

J'ai une validation de formulaire exécutée lorsque le bouton de soumission est sélectionné mais que je ne veux pas que la fonction de soumission par défaut s'exécute. Au lieu de cela, je veux exécuter un code postal ajax pour stocker les données dans le formulaire avec poster les données du côté serveur.Validation de formulaire personnalisé et envoi

Je n'arrive pas à trouver où annuler l'envoi par défaut et ajouter le code ajax.

Voici le code validate j'ai

$("#formEnroll").validate({ 
    errorElement:"p", 
    submitHandler: function(form) { 
      var phoneNumber = form.day_phone.value;    
      var phoneParts = phoneNumber.split("-"); 
      form.dayArea.value = phoneParts[0]; 
      form.dayPrefix.value = phoneParts[1]; 
      form.daySuffix.value = phoneParts[2];    
      form.submit(); 
    } 

}); 

Et voici le code ajax je veux courir au lieu de la présentation par défaut

$.ajax({ 
    type: "POST", 
    url: "/php/localProxy.php", 
    data: $('#formEnroll').serialize(), 
    success: function (response) { 
      document.location = 'http://www.xxxx.com/thank-you'; 

    }, 
    error: function() { 
      alert('There was a problem!'); // handle error 
    } 
     }); 

Répondre

2

vous pouvez appeler la fonction ajax à la place de form.submit(); form.submit(); soumettra votre code en utilisant la soumission par défaut.

$('#formEnroll').on('submit', function(e){ 
     e.preventDefault(); 

     $(this).validate({ 
      errorElement:"p", 
      submitHandler: function(form) { 
       var phoneNumber = form.day_phone.value;    
       var phoneParts = phoneNumber.split("-"); 
       form.dayArea.value = phoneParts[0]; 
       form.dayPrefix.value = phoneParts[1]; 
       form.daySuffix.value = phoneParts[2];    
       submitform(); 
      } 
     }); 
    }) 

    function submitform(){ 
    $.ajax({ 
     type: "POST", 
     url: "/php/localProxy.php", 
     data: $('#formEnroll').serialize(), 
     success: function (response) { 
       document.location = 'http://www.xxxx.com/thank-you'; 

     }, 
     error: function() { 
       alert('There was a problem!'); // handle error 
     } 
    }); 

    } 
+0

ceci arrête le défaut de fonctionner, mais rien ne soumet après la validation. Dois-je appeler la fonction ailleurs que dans le gestionnaire de soumission? – user1532944

0

Vous pouvez envelopper votre plugin validate dans une forme générique soumettre la fonction pour arrêter l'exécution standard.

$('#formEnroll').on('submit', function(e) 
{ 
    e.preventDefault(); // stop form submission 

    // Run validation 
    $(this).validate({ 
     errorElement:"p", 
     submitHandler: function(form) { 
      var phoneNumber = form.day_phone.value;    
      var phoneParts = phoneNumber.split("-"); 
      form.dayArea.value = phoneParts[0]; 
      form.dayPrefix.value = phoneParts[1]; 
      form.daySuffix.value = phoneParts[2];    
      submitform(); // call your ajax function here 
     } 
    }); 
}); 

function submitform(){ 
    $.ajax({ 
     type: "POST", 
     url: "/php/localProxy.php", 
     data: $('#formEnroll').serialize(), 
     success: function (response) { 
       document.location = 'http://www.xxxx.com/thank-you'; 

    }, 
    error: function() { 
     alert('There was a problem!'); // handle error 
    } 
}); 

Au lieu d'utiliser l'objet événement e vous pouvez aussi simplement return false; à la fin de la fonction .on pour arrêter les événements par défaut de mise à feu.

+0

et comment j'incorporer le code ajax pour fonctionner? J'ai essayé ce code que vous avez essayé et essayé d'incorporer le code ajax mais il retournerait toujours à la soumission par défaut – user1532944

+0

Voir info supplémentaire dans la réponse –

0

Vous pouvez envoyer les données par ajax en utilisant l'événement click dans le jquery en cliquant sur le bouton d'envoi et cette fonction devrait return false pour éviter la soumission par défaut par la façon dont vous pouvez envoyer les données à l'aide ajax et éviter le défaut soumission.

Questions connexes