Сейчас узнаем, какой подарок выпадет именно Вам
Крутите колесо
Ура, вы выиграли!
Ваш приз:
Годовой доступ
к видео на mo-ti -20%
по промокоду T19RAY
Промокод действителен 3 дня

Оформить доступ с промокодом
100
Как изменять значения radio в зависимости от выбора в select в ZeroBlock в Tilda
Теплица Свёколка

Как изменять значения radio в зависимости от выбора в select в ZeroBlock в Tilda

В этом примере мы по значению в выпадающем списке длины теплицы, изменяем стоимость материала по заданному прайсу
1
Создали ZeroBlock и форму в нём
2
В форме создали поля и дали им имена:
Длина - dropdown - length_strelka
Снеговая нагрузка - nagruzka
Материал - question with answer - material_strelka
3
Добавили код на страницу в блок Другое - Т123
В код занесли изменяемый прайс
/*2метра*/ '2': [{"mat1":10400},{"mat2":14600},{"mat3":10800}],
/*4метра*/ '4': [{"mat1":17800},{"mat2":21850},{"mat3":16200}],
/*6метров*/ '6': [{"mat1":24300},{"mat2":29740},{"mat3":22450}],
/*8метров*/ '8': [{"mat1":33200},{"mat2":42350},{"mat3":33890}]
Библиотека для примера

<script>

const priceSrtelka = {
 /*2метра*/   '2': [{"mat1":10400},{"mat2":14600},{"mat3":10800}],
 /*4метра*/   '4': [{"mat1":17800},{"mat2":21850},{"mat3":16200}],
 /*6метров*/  '6': [{"mat1":24300},{"mat2":29740},{"mat3":22450}],
 /*8метров*/  '8': [{"mat1":33200},{"mat2":42350},{"mat3":33890}]
};


document.addEventListener("DOMContentLoaded", function() {
    (function () {
    
        setTimeout(function(){
            
            const selectLength = document.querySelector('select[name="length_strelka"]');
            const radioMaterial = document.querySelectorAll('input[name="material_strelka"]');
            
            if(selectLength!=null && radioMaterial.length ){
                
                selectLength.addEventListener('change', function(event) {
                    
                    let place = this.value;
                    if(place=='') place = 2;
                    
                    radioMaterial[0].setAttribute('data-calc-value', priceSrtelka[place][0]['mat1']);
                    radioMaterial[1].setAttribute('data-calc-value', priceSrtelka[place][1]['mat2']);
                    radioMaterial[2].setAttribute('data-calc-value', priceSrtelka[place][2]['mat3']);
                    
                    radioMaterial[0].dispatchEvent(new Event('change', { bubbles: true }));
                
                });

            };

        }, 2000);

    })();    
});    
</script>
Made on
Tilda