2012-12-29 3 views
3

J'utilise du jQuery sur une forme de gravité actuelle. Cependant, quand je soumets le formulaire et qu'il revient avec une mauvaise validation, je perds certaines des cibles de jQuery.jQuery + Gravity Forms: Effectue une jQuery sur une mauvaise validation

Je suis curieux comment je peux échanger $(document).ready(function() { avec quelque chose qui appellera mon jQuery une fois que les champs sont rechargés avec une mauvaise validation. J'ai essayé $("#gform_submit_button_1").click(function() { cependant, c'est trop tôt. Cela doit arriver quand les nouveaux champs reviennent d'ajax.

+0

J'ai fait 2 addons pour GF mais en utilisant toujours mes propres fichiers javascript. Je sais que leurs champs ont une fonction AJAX que je n'ai jamais utilisée. S'il vous plaît donne plus d'informations ... –

+0

Je ne sais pas ce que d'autres informations à donner, @NomikOS .. Pour l'instant, je viens de désactiver ajax. – Reuben

+0

J'ai installé GF, donnez-moi un exemple de votre problème pour le recréer ici. Il est sûr que nous pouvons trouver une solution de contournement ... –

Répondre

0

Une solution est: Capturez soumettre un événement et commencer un intervalle qui vérifie votre formulaire de modifications et appelle votre fonction:

$('#your-form').submit(function(){ 
    html = $('#your-form').html(); 
    iv = setInterval(function(){ 
     If($('#your-form').html != html){ 
      yourfunc(); 
      clearInterval(iv); 
     } 
    }, 200); 
}); 

function yourfunc(){ 
    //your stuff 
} 

Ceci est cependant pas très propre et il ne fonctionnera que si le HTML est effectivement changé après l'appel Ajax.

0

Les formes de gravité fournissent un crochet , mais je ne pense pas que cela fonctionnera dans votre cas, car il ne charge pas la confirmation, mais le formulaire d'état d'erreur. Ils n'ont pas d'accroc pour cela, mais j'ai réussi à utiliser les événements délégués de jquery. J'utilise le .gform_wrapper comme premier sélecteur, puis je cible les champs que je veux réellement cibler.

Voir cette documentation pour plus d'informations:

4

Il est en fait un crochet prévu pour être utilisé ici: gform_post_render

Ce crochet jQuery est tiré à chaque fois le formulaire est rendu pour permettre à jQuery personnalisé d'être exécuté. Cela inclut la charge de forme initiale, aller à la page suivante/précédente sur les formulaires de plusieurs pages, sous forme rendu avec des erreurs de validation, un message de confirmation affiché, etc.

jQuery(document).bind('gform_post_render', function(){ 

    // code to trigger on AJAX form render 

}); 

http://www.gravityhelp.com/documentation/gravity-forms/extending-gravity-forms/hooks/javascript/gform_post_render/

0

Pour une raison quelconque Gravity Forms hasn encore 't ajouté un crochet jQuery pour la validation de formulaire échoué. Ce qu'ils recommandent de faire est de vérifier l'existence de div.validation_error.

jQuery(document).on('gform_post_render', function(e, form_id) { 
    if (jQuery('div.validation_error').length > 0) { 
     console.log('Form validation error.'); 
    } 
}); 

Vous remarquerez que je ne suis pas spécifier un parent quand je vérifie pour l'élément d'erreur de validation: jQuery('div.validation_error'). Si vous avez plusieurs formulaires sur la page, cela entraînerait des problèmes. Le paramètre form_id renvoyé contient l'ID du formulaire dans la base de données (par exemple 1, 2, 35, etc.) mais je ne suis pas sûr que cette valeur corresponde à l'ID de formulaire dans le code HTML, par exemple. <form id="gform_1">. Si elle ne correspond, alors il est bon de préciser le parent, vous pouvez donc faire:

if (jQuery('div.validation_error', '#gform_' + form_id).length > 0) { 

Peut-être que quelqu'un d'autre pourrait peser et nous faire savoir si l'ID HTML du formulaire correspond toujours à l'ID de base de données de formulaire.

Questions connexes