1/** 2 * Shortcode Contact form 3 * 4 * @package ThemeREX Addons 5 * @since v1.2 6 */ 7 8/* global jQuery, TRX_ADDONS_STORAGE */ 9 10jQuery(document).on( 'action.init_hidden_elements', function(e, container) { 11 12 "use strict"; 13 14 // Contact form validate and submit 15 if (container.find('.sc_form_form:not(.sc_form_custom):not(.inited)').length > 0) { 16 container.find('.sc_form_form:not(.sc_form_custom):not(.inited)') 17 .addClass('inited') 18 .on( 'submit', function( e ) { 19 sc_form_validate( jQuery( this ) ); 20 e.preventDefault(); 21 return false; 22 } ); 23 } 24 25 // Mark field as 'filled' and remove error message 26 jQuery( 27 'input[type="text"]:not(.fill_inited),' 28 +'input[type="number"]:not(.fill_inited),' 29 +'input[type="search"]:not(.fill_inited),' 30 +'input[type="password"]:not(.fill_inited),' 31 +'input[type="email"]:not(.fill_inited),' 32 +'input[type="tel"]:not(.fill_inited),' 33 +'input[type="url"]:not(.fill_inited),' 34 +'textarea:not(.fill_inited),' 35 +'select:not(.fill_inited)' 36 ) 37 .each(function() { 38 var $fld = jQuery( this ); 39 sc_form_mark_filled( $fld ); 40 $fld.addClass( 'fill_inited' ) 41 .on( 'blur change', function() { 42 var $self = jQuery( this ); 43 sc_form_mark_filled( $self ); 44 if ( $self.hasClass( 'filled' ) ) { 45 $self.removeClass( 'trx_addons_field_error wpcf7-not-valid' ); 46 } 47 } ); 48 } ); 49 50 51 // Mark fields as 'filled' 52 function sc_form_mark_filled(field) { 53 if (field.val() !== '') 54 field.addClass('filled'); 55 else 56 field.removeClass('filled'); 57 } 58 59 // Validate form 60 function sc_form_validate(form){ 61 var url = form.attr('action'); 62 if (url == '') return false; 63 form.find('input').removeClass('trx_addons_error_field'); 64 var error = trx_addons_form_validate(form, { 65 rules: [ 66 { 67 field: "name", 68 min_length: { value: 1, message: TRX_ADDONS_STORAGE['msg_field_name_empty'] }, 69 }, 70 { 71 field: "email", 72 min_length: { value: 1, message: TRX_ADDONS_STORAGE['msg_field_email_empty'] }, 73 mask: { value: TRX_ADDONS_STORAGE['email_mask'], message: TRX_ADDONS_STORAGE['msg_field_email_not_valid'] } 74 }, 75 { 76 field: "message", 77 min_length: { value: 1, message: TRX_ADDONS_STORAGE['msg_field_text_empty'] }, 78 } 79 ] 80 }); 81 82 if (!error && url!='#') { 83 jQuery.post(url, { 84 action: "send_sc_form", 85 nonce: TRX_ADDONS_STORAGE['ajax_nonce'], 86 data: form.serialize() 87 }).done( function( response ) { 88 var rez = trx_addons_parse_ajax_response( response ); 89 var result = form.find(".trx_addons_message_box").removeClass("trx_addons_message_box_error").removeClass("trx_addons_message_box_success"); 90 if ( rez.error === '' ) { 91 form.get(0).reset(); 92 result.addClass("trx_addons_message_box_success").html(TRX_ADDONS_STORAGE['msg_send_complete']); 93 } else { 94 result.addClass("trx_addons_message_box_error").html(TRX_ADDONS_STORAGE['msg_send_error'] + ' ' + rez.error); 95 } 96 result.fadeIn().delay(3000).fadeOut(); 97 jQuery( document ).trigger( 'action.got_ajax_response', { 98 action: 'send_sc_form', 99 result: rez 100 }); 101 }); 102 } 103 return !error; 104 } 105});
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.