Advertisement
kirtan13497

CF7 Abandoned Entries

Sep 28th, 2023
195
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
jQuery 5.53 KB | Source Code | 0 0
  1. jQuery(document).ready(function ($){
  2.     var form_json_data = false;
  3.     var form_id;
  4.     var flag = false;
  5.     var title_field_name;
  6.     var after_submit = true;
  7.    
  8.     /*
  9.      * After Submit the form Abandoned setting false
  10.      */
  11.     jQuery(document).on( 'click' , '.wpcf7-submit' , function(){
  12.         if(jQuery(document).find('.wpcf7-response-output').length > 0){
  13.             after_submit = false;
  14.         }
  15.     });
  16.    
  17.     /*
  18.      * All Field are Required
  19.      */
  20.     if( jQuery(document).find('.all-field').length > 0 ){
  21.         jQuery(document).on( 'input' , '.esb-cf7-abandoned-form :input' , prepare_data );
  22.         jQuery(document).on( 'change' , '.esb-cf7-abandoned-form select' , prepare_data );
  23.         jQuery(document).on( 'change' , '.esb-cf7-abandoned-form input[type=radio]' , prepare_data );
  24.         jQuery(document).on( 'change' , '.esb-cf7-abandoned-form input[type=checkbox]' , prepare_data );  
  25.     }
  26.    
  27.     /*
  28.      * If Email or Phone Number is Provided
  29.      */
  30.     if( jQuery(document).find('.req-field').length > 0 ){
  31.        
  32.         jQuery(document).on( 'input' , '.esb-cf7-abandoned-form :input[type=email]' , check_email_val);
  33.         jQuery(document).on( 'input' , '.esb-cf7-abandoned-form :input[type=number]' , check_email_val );
  34.         /*
  35.          * Check that Email or Phone exict or not
  36.          */
  37.         function check_email_val(){
  38.             if( jQuery(this).val() ){
  39.                 jQuery(document).on( 'input' , '.esb-cf7-abandoned-form :input' , prepare_data );
  40.                 jQuery(document).on( 'change' , '.esb-cf7-abandoned-form select' , prepare_data );
  41.                 jQuery(document).on( 'change' , '.esb-cf7-abandoned-form input[type=radio]' , prepare_data );
  42.                 jQuery(document).on( 'change' , '.esb-cf7-abandoned-form input[type=checkbox]' , prepare_data );  
  43.             }
  44.         }
  45.     }
  46.    
  47.     /*
  48.      * function to prepare json data
  49.      */
  50.     function prepare_data( event ){
  51.         if( jQuery(document).find('.esb-cf7-abandoned-form').length > 0 ){
  52.             var form    = jQuery(event.target).closest('.esb-cf7-abandoned-form');
  53.             form_id     = jQuery(document).find('input:hidden[name=_wpcf7]').val();
  54.             form_json_data        = JSON.stringify( form.serializeArray() );
  55.         }
  56.         jQuery.each( form, function( i, form_val ) {
  57.             jQuery.each( form_val, function( i, input_tag ) {
  58.                 if( input_tag.tagName.toLowerCase() != 'textarea' && i >= 5 ){
  59.                     title_field_name = jQuery( input_tag ).attr('name');
  60.                     return false;
  61.                 }
  62.             });
  63.         });
  64.     }
  65.    
  66.     /*
  67.      * Tab Chage Event
  68.      */
  69.     jQuery(document).on( 'mouseleave', mouse_leave_event );
  70.     /*
  71.      * click Of Link 'a' tag
  72.      */
  73.     jQuery(document).on( 'click', click_event );
  74.     /*
  75.      * Window Refresh Event
  76.      */
  77.     jQuery(window).unload(function() {
  78.         send_data();
  79.     });
  80.    
  81.     /*
  82.      * Send Data In post via Ajax
  83.      */
  84.     function send_data( ){
  85.         if( !after_submit ){
  86.             return;
  87.         }
  88.        
  89.         if ( !form_json_data || flag) {
  90.             return;
  91.         }
  92.        
  93.         flag = true;
  94.        
  95.         /*
  96.          * Set flag false after 5 second
  97.          */
  98.         setTimeout( function() {
  99.             flag = false;
  100.         }, 5000 );
  101.        
  102.         jQuery.ajax({
  103.             url : ESB_CF7_PUBLIC_ENTRIES_AJAX.ajaxurl,
  104.             type: 'post',
  105.             data: {
  106.                 action              : 'esb_cf7_abandoned_entry',
  107.                 form_id             : form_id,
  108.                 title_field_name    : title_field_name,
  109.                 form_value          : form_json_data
  110.             }
  111.         });
  112.         form_json_data = false;
  113.     }
  114.    
  115.     /*
  116.      * If mouse leave from only topbar
  117.      */
  118.     function mouse_leave_event( event ){
  119.         if ( event.offsetX < -1 || event.clientY > 20 ) {
  120.             return;
  121.         }
  122.         send_data();
  123.     }
  124.    
  125.     /*
  126.      * Click of 'a' Tag ( Same Screen Or target=_blank )
  127.      */
  128.     function click_event( event ){
  129.         var click_item = event.srcElement;
  130.         if( click_item.tagName == 'undefined' || click_item.tagName.toLowerCase() !== 'a' || !click_item.href ){
  131.             click_item = click_item.parentNode;
  132.         }
  133.         if( click_item && click_item.href){
  134.             var link = click_item.href;
  135.             if( ! link.match( /^javascript\:/i ) ){
  136.                 var target = ( click_item.target && !click_item.target.match( /^_(self|parent|top)$/i ) ) ? click_item.target : false;
  137.             }
  138.             if ( event.ctrlKey || event.shiftKey || event.metaKey ) {
  139.                 target = '_blank';
  140.             }
  141.             if ( target ) {
  142.                 /*
  143.                  * If target is = _blank , javascript: , self , parent , top than opens a new window and trigger send_data() function
  144.                  */
  145.                 send_data();
  146.             }else {
  147.                 /*
  148.                  * If target is not defined Prevent standard click, track then open
  149.                  */
  150.                 if ( event.preventDefault ) {
  151.                     event.preventDefault();
  152.                 } else {
  153.                     event.returnValue = false;
  154.                 }
  155.                 /*
  156.                  * Trigger send_data() function & Proceed to URL
  157.                  */
  158.                 send_data();
  159.                 window.location.href = link;
  160.             }
  161.         }
  162.     }
  163. });//End Of Documnet Ready
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement