Выполнить пользовательский код js для моего пользовательского платежного плагина при оформлении заказа woocommerce

Я создаю новый пользовательский платежный плагин для своего веб-сайта woo commerce. I В этом мне нужно добавить некоторую пользовательскую проверку для кредитной карты и некоторые другие поля ввода. Мне нужно добавить все эти проверки в отдельный файл js, и я хотел активировать функцию проверки только после успешного прохождения проверки javascript.

Я могу загрузить js, используя функцию wp_enqueue_scripts, но мой код js не выполняется после нажатия кнопки оформления заказа. Я хочу, чтобы при оформлении заказа сначала нужно было выполнить мой код, и на основе моей проверки проверки необходимо продолжить работу с функцией оформления заказа.


person Anant Waykar    schedule 18.11.2016    source источник
comment
Не могли бы вы показать код?   -  person Stanley Wang    schedule 19.11.2016


Ответы (1)


WooCommerce привязывает событие к форме заказа и использует AJAX для отправки формы (вы можете увидеть код в checkout.js).

Вот мое решение:

1. Замените исходную кнопку отправки собственной кнопкой

в functions.php

add_filter('woocommerce_order_button_html', function(){
    return '<button class="new_submit button">Place Order</button>';
});

При нажатии новой кнопки форма заказа не будет отправлена ​​напрямую.

2. Привяжите событие к новой кнопке

 jQuery(document).on('click', '.new_submit', function(e){
      e.preventDefault();       
      if (do_the_validation()){
        jQuery( 'form.checkout' ).submit();
      } else {
        return false;
      }
 })

Кроме того, я бы порекомендовал вам выполнить проверку на стороне сервера.

add_action('woocommerce_checkout_process', 'my_validation');
function my_validation() { 
    //If it's invalid, add an error.
    if (!do_validation()) {
       wc_add_notice( __( 'Something goes wrong!' ), 'error' );
    }

}
person Stanley Wang    schedule 19.11.2016