10 · Маркетинг

Калькулятор стоимости в Tilda
готовый код.

Считает ориентировочный бюджет прямо на странице и передаёт сумму и состав расчёта в форму Tilda.

Забрать код ↓
Технология
HTML + CSS + JS
Установка
15 минут
Куда вставлять
Блок T123
Обновлено
08.09.2026

Сначала посмотрите,
как это работает.

Live demoКалькулятор стоимости
Ориентировочный бюджет125 000 ₽

Сумма и состав расчёта уйдут в скрытые поля формы Tilda.

Скопируйте.
Вставьте. Опубликуйте.

Код не требует сборки или установки библиотек. Перед запуском замените значения, отмеченные в инструкции ниже.

Готовый код
<div class="tselno-calc" data-tilda-calculator>
  <div class="tselno-calc__head">
    <span>Предварительный расчёт</span>
    <strong data-calc-result>75 000 ₽</strong>
  </div>

  <label class="tselno-calc__field">
    <span>Тип проекта</span>
    <select data-calc-service>
      <option value="50000">Лендинг — от 50 000 ₽</option>
      <option value="90000">Многостраничный сайт — от 90 000 ₽</option>
      <option value="150000">Интернет-магазин — от 150 000 ₽</option>
    </select>
  </label>

  <label class="tselno-calc__field">
    <span>Количество страниц: <b data-calc-pages-output>6</b></span>
    <input data-calc-pages type="range" min="1" max="20" value="6">
  </label>

  <div class="tselno-calc__options">
    <label><input data-calc-option type="checkbox" value="50000" data-label="SEO на первый месяц"> SEO на первый месяц +50 000 ₽</label>
    <label><input data-calc-option type="checkbox" value="30000" data-label="Айдентика"> Айдентика +30 000 ₽</label>
  </div>
  <p>Точная смета — после короткого брифа.</p>
</div>

<style>
.tselno-calc {
  --calc-bg: #f2f0e9;
  --calc-text: #10110f;
  --calc-accent: #d9ff43;
  max-width: 980px;
  margin: 0 auto;
  padding: clamp(24px, 5vw, 64px);
  border: 1px solid var(--calc-text);
  background: var(--calc-bg);
  color: var(--calc-text);
  font-family: Arial, sans-serif;
}
.tselno-calc__head {
  padding-bottom: 32px;
  border-bottom: 1px solid var(--calc-text);
  display: flex;
  justify-content: space-between;
  align-items: end;
  gap: 24px;
}
.tselno-calc__head span { font-size: 13px; text-transform: uppercase; }
.tselno-calc__head strong { font-size: clamp(34px, 7vw, 78px); line-height: 1; }
.tselno-calc__field { margin-top: 32px; display: grid; gap: 14px; }
.tselno-calc__field > span { font-size: 14px; }
.tselno-calc select {
  min-height: 58px;
  padding: 0 16px;
  border: 1px solid var(--calc-text);
  border-radius: 0;
  background: transparent;
  color: inherit;
  font-size: 16px;
}
.tselno-calc input[type="range"] { width: 100%; accent-color: var(--calc-text); }
.tselno-calc__options { margin-top: 28px; display: grid; gap: 14px; }
.tselno-calc__options label { font-size: 15px; line-height: 1.4; }
.tselno-calc__options input { margin-right: 8px; accent-color: var(--calc-text); }
.tselno-calc > p { margin: 32px 0 0; padding: 12px 14px; background: var(--calc-accent); font-size: 13px; }
@media (max-width: 640px) {
  .tselno-calc__head { align-items: flex-start; flex-direction: column; }
}
</style>

<script>
(function () {
  var FORM_SELECTOR = 'form';
  var root = document.querySelector('[data-tilda-calculator]');
  if (!root) return;

  var service = root.querySelector('[data-calc-service]');
  var pages = root.querySelector('[data-calc-pages]');
  var pageOutput = root.querySelector('[data-calc-pages-output]');
  var result = root.querySelector('[data-calc-result]');
  var options = root.querySelectorAll('[data-calc-option]');
  var total = 0;
  var details = '';

  function formatPrice(value) {
    return new Intl.NumberFormat('ru-RU').format(value) + ' ₽';
  }

  function setHiddenField(form, name, value) {
    var field = form.querySelector('input[name="' + name + '"]');
    if (!field) {
      field = document.createElement('input');
      field.type = 'hidden';
      field.name = name;
      form.appendChild(field);
    }
    field.value = value;
  }

  function syncForms() {
    document.querySelectorAll(FORM_SELECTOR).forEach(function (form) {
      setHiddenField(form, 'calculated_price', formatPrice(total));
      setHiddenField(form, 'calculation_details', details);
    });
  }

  function calculate() {
    var pageCount = Number(pages.value);
    total = Number(service.value) + Math.max(0, pageCount - 1) * 5000;
    var selected = [service.options[service.selectedIndex].text, pageCount + ' стр.'];

    options.forEach(function (option) {
      if (!option.checked) return;
      total += Number(option.value);
      selected.push(option.dataset.label);
    });

    result.textContent = formatPrice(total);
    pageOutput.textContent = pageCount;
    details = selected.join(' · ');
    syncForms();
  }

  root.addEventListener('input', calculate);
  root.addEventListener('change', calculate);
  new MutationObserver(syncForms).observe(document.body, { childList: true, subtree: true });
  calculate();
})();
</script>

Четыре шага.

  1. 01

    Добавьте блок T123 там, где должен находиться калькулятор, и вставьте код целиком.

  2. 02

    Замените цены в value у вариантов проекта и дополнительных опций на свои значения.

  3. 03

    Если результат нужен только в одной форме, замените FORM_SELECTOR на селектор её блока, например '#rec123456789 form'.

  4. 04

    Опубликуйте страницу, сделайте несколько расчётов и отправьте тестовую заявку: проверьте поля calculated_price и calculation_details.

Подстройте под себя.

Базовые цены
Числа в value у option. Указывайте рубли без пробелов и символа валюты.
Цена страницы
Число 5000 в формуле Math.max(0, pageCount - 1) * 5000.
Целевая форма
Переменная FORM_SELECTOR. По умолчанию результат добавляется во все формы страницы.

Не нашли нужное?
Соберём под ваш сайт.

Опишите задачу и пришлите ссылку на страницу. Посмотрим, можно ли решить её готовым кодом или нужна индивидуальная разработка.

Обсудить в Telegram ↗