• Никакой политики на форуме. Иначе - бан!
  • Вопрос без рабочей ссылки на проблему считается риторическим. Без ссылки и скриншота - провокацией!
  • Темы озаглавленные с маленькой буквы или капсом удаляются без предупреждения!

Решено Изменить стили списка оплаты

taboon55

Новичок
Задача такая, есть чекбокс по которому идет проверка, в случае если чекбокс тру, то нужно скрыть некоторые поля способа оплаты и поставить радиа-кнопку на нужное место.
С помощью jquery я дотягиваюсь до нужного элемента и вывожу его, но при изменении его свойств ничего не происходит. Причем в инспекторе кода этот же элемент можно скрыть через дисплей нон.

мой код
JavaScript:
jQuery(document).ready(function() {
    jQuery("label[for='payment_method_cheque']").css('display', 'none')
})

верстка штатная
HTML:
<div id="payment" class="woocommerce-checkout-payment">
            <ul class="wc_payment_methods payment_methods methods">
            <li class="wc_payment_method payment_method_bacs">
    <input id="payment_method_bacs" class="input-radio" name="payment_method" value="bacs" checked="checked" data-order_button_text="" type="radio">

    <label for="payment_method_bacs">
        Прямой банковский перевод     </label>
            <div class="payment_box payment_method_bacs">
            <p>Оплату нужно направлять напрямую на наш банковский счет. Используйте идентификатор заказа в качестве кода платежа. Заказ будет отправлен после поступления средств на наш счет.</p>
        </div>
        </li>
<li class="wc_payment_method payment_method_cheque">
    <input id="payment_method_cheque" class="input-radio" name="payment_method" value="cheque" data-order_button_text="" type="radio">

    <label for="payment_method_cheque">
        Чековые платежи     </label>
            <div class="payment_box payment_method_cheque" style="display:none;">
            <p>Пожалуйста, отправьте ваш чек, указав данные магазина: название, улицу, город, область/регион, страну, почтовый индекс.</p>
        </div>
        </li>
<li class="wc_payment_method payment_method_paymaster">
    <input id="payment_method_paymaster" class="input-radio" name="payment_method" value="paymaster" data-order_button_text="" type="radio">

    <label for="payment_method_paymaster">
        paymaster <img src="http://shop.lc/wp-content/plugins/woocommerce-paymaster-gateway-019/img/paymaster.png" alt="paymaster">    </label>
            <div class="payment_box payment_method_paymaster" style="display:none;">
            <p>Оплата с помощью paymaster.</p>
        </div>
        </li>
        </ul>
        <div class="form-row place-order">
        <noscript>
            Поскольку ваш браузер не поддерживает JavaScript или в нем он отключен, просим убедиться в том, что вы нажали кнопку &lt;em&gt;Обновить итог&lt;/em&gt; перед регистрацией заказа. Иначе, есть риск неправильного подсчета стоимости.            <br/><button type="submit" class="button alt" name="woocommerce_checkout_update_totals" value="Обновить итог">Обновить итог</button>
        </noscript>

   
   
        <button type="submit" class="button alt" name="woocommerce_checkout_place_order" id="place_order" value="Подтвердить заказ" data-value="Подтвердить заказ">Подтвердить заказ</button>
   
        <input id="_wpnonce" name="_wpnonce" value="f9142a6117" type="hidden"><input name="_wp_http_referer" value="/?wc-ajax=update_order_review" type="hidden">    </div>
</div>

UPDATE:
вывод css свойсва дисплей до изменения = block
после изменения = none, так же при выводе объекта в теге label присутствует style="display:none", но в верстке его по прежнему нет


UPDATE:
Все срабатывает, нужyный метод оплаты скрывается, но сразу же происходит перезагрузка методов оплаты и он появляется по новой. Как отменить перезагрузку по чекбоксу? Страница "checkout". Нужно отменить "?wc-ajax=update_order_review" Или есть другие варианты?
 
Последнее редактирование:

taboon55

Новичок
Ответ найден. Чтобы убрать ajax запрос на формы итога и способов оплаты нужна в файле plugins/woocommerce/assets/js/frontend/checkout.min.js закоментить строку
JavaScript:
this.$checkout_form.on("change",'select.shipping_method, input[name^="shipping_method"], #ship-to-different-address input, .update_totals_on_change select, .update_totals_on_change input[type="radio"], .update_totals_on_change input[type="checkbox"]',this.trigger_update_checkout)
 
Сверху Снизу