jQuery(function($){ function validateForm(input_class) { var valid = true; input_class.each(function () { if ($(this).val() === '') { valid = false; return false; } }); return valid; } function price_format(nStr) { nStr = parseFloat(nStr).toFixed(formipay.decimal_digits) + ''; var x = nStr.split('.'); var x1 = x[0]; var x2 = x.length > 1 ? formipay.decimal_symbol + x[1] : ''; var rgx = /(\d+)(\d{3})/; while (rgx.test(x1)) { x1 = x1.replace(rgx, '$1' + formipay.thousand_separator + '$2'); } return formipay.currency + ' ' + x1 + x2; } $('.product-price-row').find('td').html(price_format($('#product_price').val())); $('.formipay-payment-option-group:first-child').find('input').trigger('click'); function calculate_fields() { var calc_field = $('.formipay-input-calculable'); var button_text = $('.formipay-submit-button').data('button-text'); $('table#formipay-review-order tr:not(.formipay-product-row)').remove(); var price = parseInt($('#product_price').val()); var total = price; var qty = parseInt($('.formipay-qty-input').val()); var total = price * qty; $('tr.formipay-product-row').find('td').html(price_format(total)); if(calc_field.length > 0){ $.each(calc_field, function(o, p){ var field_amount = 0; var value_badge = false; var badge_label = ''; var qty_label = ''; if($(p).hasClass('formipay-select')){ value_badge = true; badge_label = $(p).find('option:selected').text(); field_amount = $(p).find('option:selected').attr('data-calc-value'); }else if($(p).attr('type') == 'hidden'){ field_amount = $(p).attr('data-calc-value'); }else{ if($(p).is(':checked')){ value_badge = true; badge_label = $(p).siblings('span').text(); field_amount = $(p).attr('data-calc-value'); } } if(!field_amount){ field_amount = 0; } if($(p).hasClass('formipay-select')){ if(formipay.quantity_toggle == 'on' && $(p).find('option:selected').attr('data-qty-multiply') == 'yes'){ field_amount = parseFloat(field_amount) * parseInt(qty); if(qty > 1){ qty_label = ' ✕ '+qty; } } }else{ if(formipay.quantity_toggle == 'on' && $(p).attr('data-qty-multiply') == 'yes'){ field_amount = parseFloat(field_amount) * parseInt(qty); if(qty > 1){ qty_label = ' ✕ '+qty; } } } var label = ''+$(p).attr('data-label')+qty_label+''; if(value_badge){ label += ''+badge_label+''; } if(field_amount > 0){ $('table#formipay-review-order').find('tbody').append(`
'+notice_message.replace('{{field}}', the_label)+'
'); invalid_input ++; } } else if ($(field).attr('name').search('agreement') != -1) { var notice_message = formipay.notice_empty_agreement_message; $(field).parent().append(''+notice_message.replace('{{field}}', the_label)+'
'); invalid_input ++; } else { var notice_message = formipay.notice_empty_select_message; $(field).parent().append(''+notice_message.replace('{{field}}', the_label)+'
'); invalid_input ++; } } else { var notice_message = formipay.notice_empty_text_message; $(field).parent().append(''+notice_message.replace('{{field}}', the_label)+'
'); invalid_input ++; } } }); if(invalid_input > 0){ return false; } return true; } $('.formipay-page-break-next-button').on('click', function(e){ var next_page = $('.formipay-page-break:visible').next('.formipay-page-break'); var inputs_in_page = $('.formipay-page-break:visible').find('.formipay-input'); var valid_to_continue = check_page_input_invalid(inputs_in_page); if(valid_to_continue === false){ return false; } var active_progress = $('.formipay-progress.active'); if(next_page.length > 0){ active_progress.next('.formipay-progress').addClass('active'); active_progress.removeClass('active'); if(next_page.hasClass('formipay-page-break-payment')){ // $(this).prop('disabled', true); $(this).hide(); $(this).siblings('.formipay-submit-button').show(); } $('.formipay-page-break:visible').hide(); next_page.show(); e.target.blur() } $('.formipay-page-break-prev-button').prop('disabled', false); }); $('.formipay-page-break-prev-button').on('click', function(e){ var prev_page = $('.formipay-page-break:visible').prev('.formipay-page-break'); var active_progress = $('.formipay-progress.active'); if(prev_page.length > 0){ active_progress.prev('.formipay-progress').addClass('active'); active_progress.removeClass('active'); if(prev_page.is('.formipay-page-break:nth-child(2)')){ $(this).prop('disabled', true); } $('.formipay-page-break-next-button').show(); $('.formipay-page-break-next-button').siblings('.formipay-submit-button').hide(); $('.formipay-page-break:visible').hide(); prev_page.show(); e.target.blur() } $('.formipay-page-break-next-button').prop('disabled', false); }); $('.formipay-input, .formipay-qty-input').on('change', function(){ calculate_fields(); }); $(document).on('click', '.formipay-copy-button', function() { var $this = $(this); var copiedtext = $(this).prev("p").attr("data-copy-value"); if (navigator.clipboard) { navigator.clipboard.writeText(copiedtext) .then(() => { $this.html(' '+$this.attr('data-copied-text')); setTimeout(() => { $this.html(' '+$this.attr('data-copy-text')); }, 1200); }) .catch((error) => { $this.html(' '+$this.attr('data-not-copied-text')); setTimeout(() => { $this.html(' '+$this.attr('data-copy-text')); }, 1200); }); } else { $this.html(' '+$this.attr('data-not-copied-text')); setTimeout(() => { $this.html(' '+$this.attr('data-copy-text')); }, 1200); } }); $('.formipay-submit-button').on('submit click', function(e){ e.preventDefault(); $(this).text(formipay.button_processing_text).prop('disabled', true); var form = $(this).parents('form'); var form_id = form.data('form-id'); var inputs = form.find('.formipay-input'); var form_inputs = new FormData(); form_inputs.append('action', 'formipay_submission'); form_inputs.append('data[qty]', $('.formipay-qty-input').val()); form_inputs.append('form_id', form_id); var $valid = true; // Initialize as true inputs.each(function(index, field) { var the_key = $(field).attr('name'); var the_label = $(field).data('label'); // $(field).removeAttr('style'); $(field).removeClass('formipay-input-invalid'); if (!$(field).is(':valid')) { // $(field).attr('style', 'border-color: #d93258!important;'); $(field).addClass('formipay-input-invalid'); $(field).siblings('.formipay-validate-field').remove(); if ($(field).attr('type') == 'select' || $(field).attr('type') == 'radio' || $(field).attr('type') == 'checkbox') { if ($(field).attr('type') == 'radio' || $(field).attr('type') == 'checkbox') { if (!$('[name="' + $(field).attr('name') + '"]:checked').length) { var notice_message = formipay.notice_empty_select_message; $(field).parent().append(''+notice_message.replace('{{field}}', the_label)+'
'); $valid = false; // Set valid to false } } else if ($(field).attr('name').search('agreement') != -1) { var notice_message = formipay.notice_empty_agreement_message; $(field).parent().append(''+notice_message.replace('{{field}}', the_label)+'
'); $valid = false; // Set valid to false } else { var notice_message = formipay.notice_empty_select_message; $(field).parent().append(''+notice_message.replace('{{field}}', the_label)+'
'); $valid = false; // Set valid to false } } else { var notice_message = formipay.notice_empty_text_message; $(field).parent().append(''+notice_message.replace('{{field}}', the_label)+'
'); $valid = false; // Set valid to false } } else { var the_value; if ($(field).attr('type') == 'checkbox') { var val = []; form.find('[name=' + the_key + ']:checked').each(function(i, check) { val[i] = $(check).val(); }); the_value = val; } else if ($(field).attr('type') == 'radio') { the_value = $('[name=' + the_key + ']:checked').val(); } else { the_value = $(field).val(); } if ($(field).attr('type') == 'hidden' || $(field).parent().is(':hidden')) { if ($(field).hasClass('formipay-select')) { form_inputs.append('data[' + the_key + '][value]', the_value); form_inputs.append('data[' + the_key + '][label]', $(field).find('option:selected').attr('data-label')); } else { form_inputs.append('data[' + the_key + ']', the_value); } } else { $(field).siblings('.formipay-validate-field').remove(); if ($(field).hasClass('formipay-select')) { form_inputs.append('data[' + the_key + '][value]', the_value); form_inputs.append('data[' + the_key + '][label]', $(field).find('option:selected').attr('data-label')); } else { form_inputs.append('data[' + the_key + ']', the_value); } if( the_key == 'payment' && typeof trx_fee !== typeof undefined && trx_fee !== false && trx_fee > 0 ) { form_inputs.append('data[trx_fee]', $('[name=' + the_key + ']:checked').attr('data-calc-value')); } } } }); if($valid) { $.ajax({ url: formipay.ajax_url, data: form_inputs, processData: false, contentType: false, type: 'POST', enctype: 'multipart/form-data', beforeSend: function() { form.find('.formipay-validate-field').remove(); $('.formipay-input').removeAttr('style'); $('[data-form-id=' + form_id + ']').siblings('.submit-response').html(''); $('[data-form-id=' + form_id + ']').siblings('.submit-response').hide(); $('[data-form-id=' + form_id + ']').siblings('.submit-response').removeClass('formipay-message-success formipay-message-failed'); }, success: function(res) { console.log(res); if(res.success) { if(res.data.response_type == 'notice') { $('[data-form-id=' + form_id + ']').find('.submit-response').html('Success! ' + res.data.message); $('[data-form-id=' + form_id + ']').find('.submit-response').addClass('formipay-message-success'); $('[data-form-id=' + form_id + ']').find('.submit-response').show(); if(res.data.action_type == 'thankyou'){ $('[data-form-id=' + form_id + ']').siblings('.formipay-thankyou').html(res.data.thankyou); setTimeout(() => { $('[data-form-id=' + form_id + ']').find('.formipay-thankyou').show(); $('[data-form-id=' + form_id + ']').remove(); window.location.href = res.data.url; }, 2500); }else{ window.location.href = res.data.url; } } else if(res.data.response_type == 'popup') { $('[data-form-id=' + form_id + ']').find('.formipay-thankyou').html(res.data.thankyou); Swal.fire({ title: 'Success!', html: res.data.message, icon: 'success' }).then((result) => { if (result.isConfirmed) { if(res.data.action_type == 'thankyou'){ $('[data-form-id=' + form_id + ']').find('.formipay-thankyou').show(); $('[data-form-id=' + form_id + ']').remove(); }else{ window.location.href = res.data.url; } } }); } } else { if(res.data.response_type == 'notice') { $('[data-form-id=' + form_id + ']').find('.submit-response').html('Failed! ' + res.data.message); $('[data-form-id=' + form_id + ']').find('.submit-response').addClass('formipay-message-failed'); $('[data-form-id=' + form_id + ']').find('.submit-response').show(); } else if(res.data.response_type == 'popup') { Swal.fire({ title: 'Failed!', html: res.data.message, icon: 'error' }).then((result) => { if (result.isConfirmed) { window.location.reload(); } }); } } } }); } }); feather.replace(); });