Contact Form 7: создание динамических калькуляторов с помощью JavaScript

Contact Form 7 – один из самых популярных плагинов для создания форм в WordPress. Часто возникает задача сделать форму не просто для сбора данных, а с возможностью динамического расчёта стоимости или других параметров прямо на стороне клиента. В этой статье рассмотрим, как добавить в Contact Form 7 функционал калькулятора с динамическим обновлением значений с помощью JavaScript.

Почему стоит использовать динамические калькуляторы в Contact Form 7

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

Реализовать это можно несколькими способами: через сторонние плагины, кастомный JavaScript или интеграцию с API. В статье покажем пример с JavaScript, который даёт полную свободу настройки и не требует установки дополнительных расширений.

Создаем форму с полями для калькулятора в Contact Form 7

Для начала создадим простую форму в CF7 с несколькими полями, которые будут участвовать в расчетах. Например, калькулятор стоимости печати:

  • Количество копий (числовое поле)
  • Тип бумаги (выпадающий список с разной стоимостью)
  • Дополнительные услуги (флажки)
  • Итоговая сумма (поле только для вывода результата)

Пример формы (код для Contact Form 7):

[number quantity id:cf7calc-quantity min:1 value:1]
[select paper id:cf7calc-paper "Обычная|1" "Матовая|1.5" "Глянцевая|2"]
[checkbox extras use_label_element "Ламинация (+50)" "Двойная печать (+100)"]
<p>Итого: <span id="cf7calc-total">0</span> руб.</p>
[submit "Отправить"]

Здесь у каждого поля есть уникальный идентификатор, который мы будем использовать в JavaScript.

Добавляем JavaScript для динамического расчета

Следующий шаг — написать скрипт, который будет отслеживать изменения в полях и обновлять итоговую сумму в реальном времени. Добавьте этот код в файл вашей темы или с помощью плагина для вставки пользовательских скриптов:

document.addEventListener('DOMContentLoaded', function() {
    const quantityField = document.getElementById('cf7calc-quantity');
    const paperField = document.getElementById('cf7calc-paper');
    const extrasFields = document.querySelectorAll('input[name="extras[]"]');
    const totalDisplay = document.getElementById('cf7calc-total');

    function contactform7ruCalculate() {
        let quantity = parseInt(quantityField.value) || 0;
        let paperPrice = parseFloat(paperField.options[paperField.selectedIndex].value) || 0;
        let extrasPrice = 0;

        extrasFields.forEach(function(checkbox) {
            if (checkbox.checked) {
                if (checkbox.value === 'Ламинация (+50)') extrasPrice += 50;
                if (checkbox.value === 'Двойная печать (+100)') extrasPrice += 100;
            }
        });

        let total = quantity * paperPrice * 100 + extrasPrice; // умножаем на 100, чтобы получить сумму в рублях
        totalDisplay.textContent = total.toFixed(0);
    }

    quantityField.addEventListener('input', contactform7ruCalculate);
    paperField.addEventListener('change', contactform7ruCalculate);
    extrasFields.forEach(function(checkbox) {
        checkbox.addEventListener('change', contactform7ruCalculate);
    });

    contactform7ruCalculate(); // начальный расчет
});

Обратите внимание, что мы создали функцию contactform7ruCalculate с префиксом домена для уникальности и удобства отладки. Скрипт слушает изменения в полях, рассчитывает сумму и выводит её в отдельный элемент.

Передача результата калькулятора в письмо и базу

Чтобы итоговая сумма попала в письмо, отправляемое через Contact Form 7, нужно добавить скрытое поле, которое будет обновляться из JavaScript. В форму добавьте:

[hidden total id:cf7calc-total-hidden]

И в скрипте обновляйте это поле при каждом расчёте:

document.getElementById('cf7calc-total-hidden').value = total.toFixed(0);

Теперь в настройках письма CF7 можно использовать поле [total], чтобы отобразить итоговую сумму. Это позволит автоматически сохранять и отправлять данные калькулятора вместе с остальными полями формы.

Расширение функционала: подключение к сторонним сервисам и плагины

Если вам нужно более сложное решение, можно использовать плагины для Contact Form 7 с поддержкой калькуляторов, например, Clearfy Pro, который расширяет возможности CF7, включая продвинутую валидацию и интеграции.

Также можно отправлять данные в CRM или Google Sheets с помощью webhook или через REST API, как показано в других наших статьях. Комбинирование динамических калькуляторов и автоматической обработки данных открывает широкие возможности для онлайн-бизнеса.

Советы по отладке и оптимизации

Для корректной работы калькулятора:

  • Убедитесь, что у вас правильно подключен JavaScript и нет конфликтов с другими скриптами.
  • Проверяйте, что все идентификаторы полей совпадают и используются именно те, что в форме.
  • Тестируйте работу на мобильных устройствах и разных браузерах.
  • Для сложных вычислений можно использовать JSON для хранения цен и параметров, чтобы легко добавлять новые опции.

Использование кастомных JavaScript-решений позволяет гибко настраивать контактные формы под нестандартные задачи, что существенно расширяет возможности Contact Form 7.

Добавь в закладки и поделись с друзьями:

⭐⭐⭐⭐⭐
Contact Form 7: автоматическая замена значения поля по условию
27.01.2026
Contact Form 7: автоматическая замена значения поля формы по условию
17.05.2026
Contact Form 7: как настроить и изменить заголовки email для отправки писем
01.03.2026
Contact Form 7: как добавить поля динамического выбора в форму
26.02.2026
Contact Form 7: автоматическое добавление скрытых UTM-меток в форму
08.05.2026
×
Оптимизируй свой сайт!

Скидка -15% на премиум плагин Clearfy Pro

Купить плагин сейчас ⋙