2016-12-08 3 views
1

Je veux vérifier l'adresse a classé l'adresse correcte, puis envoyez un courriel. Mon code fonctionne mais je veux exécuter mon code après contact de la validation 7. Si mon code retourne vrai alors le formulaire soumettra et enverra l'email sinon montrer l'alerte et ne devrait pas être soumis.Avant l'envoi du courrier validez le contact de 7

$('.wpcf7-submit').on('click', function (e) { 
    var address = $('input[name="your-address"]').val(); 
    //e.preventDefault(); 
    if(city !=="") { 
     jQuery.post(gs_cf7_url, {data:address, action:'gs_cf7_check_lat_lag'}, function (response){ 
      if(response=="no") { 
       alert('Sorry we couldnt find the location'); 
      } else { 
       //$(".wpcf7-submit").unbind("submit").submit(); 
       //$(".wpcf7-submit").unbind("submit"); 
      } 
     }); 
    } 
}); 

Je suis à la recherche d'un crochet, comme add_action('wpcf7_before_send_mail', 'save_form'); s'il comme un hameçon javascript?

Répondre

0

La logique de Contact à partir de 7 est la suivante. Sur Soumission cliquez sur il tire ajax, effectue toutes les validations dans le code php et retourne à la fonction interne js $ .wpcf7AjaxSuccess = fonction (données, statut, xhr, $ form). Cette fonction vérifie data.invalids et si elle est true, affiche un ou plusieurs messages d'erreur. Cela signifie qu'il est trop tard pour effectuer vos vérifications après la validation du formulaire de contact 7, car lorsque le code PHP accepte toutes les données comme valides, il envoie un courrier électronique et renvoie le contrôle à $ .wpcf7AjaxSuccess. Pour contourner ce problème, vous pouvez marquer le champ d'adresse comme requis dans CF7, surveiller l'événement .focusout() dans votre champ (entrée [name = "your-address"]) et l'effacer si l'adresse entrée n'est pas valide. Lorsque vous cliquez sur Envoyer, CF7 n'enverra pas l'e-mail et demandera votre champ.

Essayez de changer votre code de cette façon:

$('input[name="your-address"]).focusout(function() { 
    var address = $('input[name="your-address"]').val(); 
    //e.preventDefault(); 
    if(city !=="") { 
     jQuery.post(gs_cf7_url, {data:address, action:'gs_cf7_check_lat_lag'}, function (response){ 
      if(response=="no") { 
       alert('Sorry we couldnt find the location'); 
       $('input[name="your-address"]').val(''); 
      } else { 
       //$(".wpcf7-submit").unbind("submit").submit(); 
       //$(".wpcf7-submit").unbind("submit"); 
      } 
     }); 
    } 
}); 

Je n'ai pas vérifié depuis que je n'ai pas d'autres morceaux de votre code (gs_cf7_check_lat_lag), donc s'il vous plaît traiter comme idée comment faire une solution de contournement.

+0

Merci @kagg Design. Ouais l'adresse déposée est obligatoire mais je veux vérifier une autre validation? – Coder

+0

Merci beaucoup pour votre aide.Mais ce que j'ai été regardé peut vérifier par réponse – Coder