2016-12-08 4 views
1

Я хочу проверить адрес, у которого есть правильный адрес, а затем отправить электронное письмо. Мой код работает, но я хочу выполнить свой код после контакта с 7 валидацией. если мой код вернет true, тогда форма отправит и отправит электронное сообщение в противном случае, покажет предупреждение и не будет отправлено.Перед отправкой почты подтвердите контакт от 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"); 
      } 
     }); 
    } 
}); 

Ищу крюк, такие как add_action('wpcf7_before_send_mail', 'save_form'); если в любом яваскрипт крючка?

ответ

0

Логика Contact From 7 заключается в следующем. В режиме «Отправить» он запускает ajax, выполняет все проверки в php-коде и возвращает в js внутреннюю функцию $ .wpcf7AjaxSuccess = function (data, status, xhr, $ form). Эта функция проверяет data.invalids и, если true, показывает сообщение об ошибке.

Это означает, что выполнять проверки после подтверждения формы контакта 7 слишком поздно, поскольку, когда PHP-код принимает все данные как действительные, он отправляет электронную почту и возвращает управление в $ .wpcf7AjaxSuccess.

В качестве обходного пути вы можете пометить поле адреса, как требуется в случае CF7, monitor .focusout() в вашем поле (input [name = "your-address"]) и удалить его, если введенный адрес недействителен. При отправке клика CF7 не отправит электронное письмо, и вам понадобится ваше поле.

Попробуйте изменить код таким образом:

$('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"); 
      } 
     }); 
    } 
}); 

Я не проверял это, так как я не имею других частей вашего кода (gs_cf7_check_lat_lag), поэтому, пожалуйста, относиться к ней как идея, как сделать обходной путь.

+0

Спасибо @kagg Дизайн. Да, зарегистрированный адрес требуется, но я хочу проверить еще одну проверку? – Coder

+0

Большое вам спасибо за помощь. Но то, что я смотрел, может проверить ответ – Coder

Смежные вопросы