Создать акаунт
Всё для вебмастера » Вопросы и ответы » CMS » WordPress » Как задать условие в форме заказа с помощью JS-скрипта?

Как задать условие в форме заказа с помощью JS-скрипта?

12 апр 2023, 10:55
WordPress
121
0
Подскажите пожалуйста, как правильно добавить JS-скрипт в форму заказа магазина?
Скрипт работает плохо (через раз отрабатывает).
Что я делаю не так? Может быть есть способ проще?
Возможно я неправильно указываю порядок выполнения скриптов?
Буду благодарен за любую информацию.

Магазин сделан на WP / Woocommerce.
Хочу менять финальную стоимость заказа при выборе способа доставки.

Как у меня сейчас все устроено в данный момент:

Добавляю div-блок в файл form-checkout.php
<?php echo '<div class="new_box_one"></div>' ?>

Далее не нему подцепляю JS-скрипт:
function countDeliverySum() {    let subTotalSum = document.querySelector('.cart-subtotal .woocommerce-Price-amount bdi');    let subTotalSumOnlyNum = subTotalSum.innerHTML.replace(/[^0-9]/g, "");    let totalSum = document.querySelector('.order-total .woocommerce-Price-amount bdi');    let oldBox = document.querySelector('.new_box_one');    let newBoxContent = `        <div class="delivery_new_box">            <div class="location_delivery">                <form action="">                    <input type="radio" name="test" id="location_moscow">                    <label for="radio1_moscow">Москва</label>                        <input type="radio" name="test" id="location_other_city">                    <label for="radio1_mosobl">Московская обл</label>                        <input type="radio" name="test" id="location_other_country">                    <label for="radio1_mosobl">Другая страна</label>                </form>            </div>                        <div class="class_delivery">                <input type="radio" name="test1" id="delivery_type_1">                <label for="delivery_type_1">СДЭК</label>                                <input type="radio" name="test1" id="delivery_type_2">                <label for="delivery_type_2">Почта России</label>                    <input type="radio" name="test1" id="delivery_type_3">                <label for="delivery_type_3">Курьер сегодня</label>                    <input type="radio" name="test1" id="delivery_type_4">                <label for="delivery_type_4">Курьер с примеркой</label>                    <input type="radio" name="test1" id="delivery_type_5">                <label for="delivery_type_5">Самовывоз</label>                    <input type="radio" name="test1" id="delivery_type_6">                <label for="delivery_type_6">Worldwide</label>                    <input type="radio" name="test1" id="delivery_type_7">                <label for="delivery_type_7">СДЭК (Беларусь, Казахстан, Армения)</label>            </div>        </div>    `;    oldBox.innerHTML = newBoxContent;    let location1 = document.querySelector('#location_moscow');    let location2 = document.querySelector('#location_other_city');    let location3 = document.querySelector('#location_other_country');    let deliveryType1 = document.querySelector('#delivery_type_1');    let deliveryType2 = document.querySelector('#delivery_type_2');    let deliveryType3 = document.querySelector('#delivery_type_3');    let deliveryType4 = document.querySelector('#delivery_type_4');    let deliveryType5 = document.querySelector('#delivery_type_5');    let deliveryType6 = document.querySelector('#delivery_type_6');    let deliveryType7 = document.querySelector('#delivery_type_7');    let del1 = 390; // Sdek    let del2 = 1190; // Post of Russia    let del3 = 450; // Courier today    let del4 = 550; // Courier widt fitting    let del5 = 0; // Take by self    let del6 = 3500; // Worldwide    let del7 = 590; // Sdek SNG '₽'    location1.addEventListener('click', function locationOne() {        totalSum.innerHTML = subTotalSumOnlyNum + ' ₽';        deliveryType1.classList.add('active');        deliveryType2.classList.add('active');        deliveryType3.classList.add('active');        deliveryType4.classList.add('active');        deliveryType5.classList.add('active');        deliveryType6.classList.remove('active');        deliveryType7.classList.remove('active');        deliveryType1.addEventListener('click', function() {            let res = 0;            res = Number(subTotalSumOnlyNum) + Number(del1);            totalSum.innerHTML = res + ' ₽';        })        deliveryType2.addEventListener('click', function() {            let res = 0;            res = Number(subTotalSumOnlyNum) + Number(del2);            totalSum.innerHTML = res + ' ₽';        })        deliveryType3.addEventListener('click', function() {            let res = 0;            res = Number(subTotalSumOnlyNum) + Number(del3);            totalSum.innerHTML = res + ' ₽';        })        deliveryType4.addEventListener('click', function() {            let res = 0;            res = Number(subTotalSumOnlyNum) + Number(del4);            totalSum.innerHTML = res + ' ₽';        })        deliveryType5.addEventListener('click', function() {            let res = 0;            res = Number(subTotalSumOnlyNum) + Number(del5);            totalSum.innerHTML = res + ' ₽';        })    });    location2.addEventListener('click', function () {        totalSum.innerHTML = subTotalSumOnlyNum + ' ₽';        deliveryType1.classList.add('active');        deliveryType2.classList.add('active');        deliveryType3.classList.remove('active');        deliveryType4.classList.remove('active');        deliveryType5.classList.remove('active');        deliveryType6.classList.remove('active');        deliveryType7.classList.remove('active');        deliveryType1.addEventListener('click', function() {            let res = 0;            res = Number(subTotalSumOnlyNum) + Number(del1);            totalSum.innerHTML = res + ' ₽';        })        deliveryType2.addEventListener('click', function() {            let res = 0;            res = Number(subTotalSumOnlyNum) + Number(del2);            totalSum.innerHTML = res + ' ₽';        })    });    location3.addEventListener('click', function () {        totalSum.innerHTML = subTotalSumOnlyNum + ' ₽';        deliveryType1.classList.remove('active');        deliveryType2.classList.remove('active');        deliveryType3.classList.remove('active');        deliveryType4.classList.remove('active');        deliveryType5.classList.remove('active');        deliveryType6.classList.add('active');        deliveryType7.classList.add('active');        deliveryType6.addEventListener('click', function() {            let res = 0;            res = Number(subTotalSumOnlyNum) + Number(del6);            totalSum.innerHTML = res + ' ₽';        })        deliveryType7.addEventListener('click', function() {            let res = 0;            res = Number(subTotalSumOnlyNum) + Number(del7);            totalSum.innerHTML = res + ' ₽';        })    });}window.addEventListener("load", (event) => {    countDeliverySum();});


Вот так это выглядит:
6431ecf1c4e90511241989.png

Внимание! Как задать условие в форме заказа с помощью JS-скрипта? предоставлен пользователями сайта исключительно в ознакомительных целях. Администрация не несет ответственности за его содержимое.

Смотрите также:

Комментарии к Как задать условие в форме заказа с помощью JS-скрипта?
Добавить Комментарий
В комментариях запрещаются спам, а также реклама любых товаров и услуг, иных ресурсов.
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.