Как можно сделать так, чтобы при нажатии на картинку в кастомном калькуляторе на Tilda выбиралась соответствующая галочка?

Здравствуйте! 

Прошу вашей помощи в решении задачи с кодом. У меня есть форма на Tilda, которая эффективно рассчитывает результаты на основе заполненных полей, однако внешний вид её меня не устраивает. Я решил заменить стандартные галочки на собственные изображения и расположить их так, как мне хочется. Важно, чтобы при клике на определенное изображение выбирался соответствующий чекбокс. При этом форма с галочками будет скрыта и нужна только для расчетов.

В приведенном ниже коде используется jQuery, и он работает для одиночного чекбокса, но я хочу адаптировать его для формы с несколькими вариантами галочек:

<pre><code class="javascript">$('.krep1').click(function(){
$('input[name="krep1"]').trigger('click');
});</code></pre>

Как можно сделать так, чтобы каждое изображение соответствовало своему чекбоксу?

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

Буду признателен за вашу помощь!
  • 23 декабря 2024 г. 15:23
Ответы на вопрос 2
Привет! Давайте разберемся с вашей задачей по порядку.

### 1. Привязка изображений к чекбоксам

Вы можете настроить каждое изображение так, чтобы при нажатии на него срабатывал соответствующий чекбокс. Для этого вам нужно связывать каждое изображение с конкретным чекбоксом. Для этого можно использовать атрибут `data-`, который даст вам возможность указать, какой именно чекбокс нужно активировать при клике на изображение.

Например, предположим, у вас есть несколько чекбоксов с названиями `option1`, `option2`, и т.д. Код HTML для чекбоксов и изображений может выглядеть так:

```html
<input type="checkbox" name="option1" id="option1" style="display: none;">
<img class="option-img" data-target="option1" src="image1.png" alt="Option 1">

<input type="checkbox" name="option2" id="option2" style="display: none;">
<img class="option-img" data-target="option2" src="image2.png" alt="Option 2">
```

Теперь ваш jQuery код будет выглядеть следующим образом:

```javascript
$('.option-img').click(function() {
    const targetCheckbox = $(this).data('target');
    $('#' + targetCheckbox).trigger('click');
});
```

### 2. Получение и отображение результата в текстовом виде

Чтобы извлечь значение результата из формы и отобразить его на странице по нажатию кнопки, вы можете использовать следующий код jQuery:

```html
<button id="calculate">Рассчитать</button>
<p id="result"></p>
```

И вот код для обработки нажатия на кнопку и вывода результата:

```javascript
$('#calculate').click(function() {
    // Получаем значение результата, предположим, оно находится в элементе с id="resultValue"
    const resultValue = $('#resultValue').val(); // Или используйте .text() если значение уже отображается
    $('#result').text(resultValue);
});
```

В этом коде мы используем jQuery для получения значения из элемента (например, из текстового поля или другого элемента формы) и выводим его в параграф с id `result`.

### Итоговый код

Объединив все вместе, ваши скрипты могут выглядеть как-то так:

```html
<input type="checkbox" name="option1" id="option1" style="display: none;">
<img class="option-img" data-target="option1" src="image1.png" alt="Option 1">

<input type="checkbox" name="option2" id="option2" style="display: none;">
<img class="option-img" data-target="option2" src="image2.png" alt="Option 2">

<button id="calculate">Рассчитать</button>
<p id="result"></p>
<input type="hidden" id="resultValue" value="Ваш результат" /> <!-- Или получите его из вашего калькулятора -->

<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script>
    $('.option-img').click(function() {
        const targetCheckbox = $(this).data('target');
        $('#' + targetCheckbox).trigger('click');
    });

    $('#calculate').click(function() {
        const resultValue = $('#resultValue').val(); // Получаем значение результата
        $('#result').text(resultValue); // Отображаем его в абзаце
    });
</script>
```

Не забудьте протестировать и адаптировать код под свои нужды! Если у вас есть дополнительные вопросы, смело спрашивайте.
Может стилями? В фон тега label.
Похожие вопросы