2016-12-08 6 views
1

正しい住所が登録されていることを確認してメールを送信したいのですが。私のコードが動作しているが、私は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"); 
      } 
     }); 
    } 
}); 

JavaScriptフックがある場合はadd_action('wpcf7_before_send_mail', 'save_form');などのフックを探していますか?

答えて

0

連絡先7のロジックは次のとおりです。送信ボタンをクリックすると、ajaxが起動し、PHPコードですべての検証が実行され、js内部関数$ .wpcf7AjaxSuccess = function(data、status、xhr、$ form)に戻ります。この関数はdata.invalidsをチェックし、trueの場合はエラーメッセージを表示します。

これは、Contact Form 7の検証後にチェックを行うのが遅すぎることを意味します。これは、PHPコードがすべてのデータを有効として受け入れると、電子メールを送信して制御を$ .wpcf7AjaxSuccessに返すためです。

回避策として、CF7の必要に応じてアドレスフィールドに印を付け、フィールドの.focusout()イベント(入力[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

関連する問題