Категории

Как сделать калькулятор с ползунком и AJAX: динамический расчёт без перезагрузки

2025-10-24 08:40:46 | Статья из категории: Создание сайтов

Калькулятор с ползунком и AJAX на сайт

Зачем это вообще нужно?

Представь: ты делаешь сайт для строительной компании или просто хочешь посчитать, сколько досок, гвоздей и рулонов кровли уйдёт на дом. Площадь — от 20 до 200 м². И чтобы не перезагружать страницу при каждом движении ползунка, всё считается «на лету» через AJAX. Это удобно, быстро и выглядит профессионально — даже если у тебя самописный блог на PHP.

Демо: калькулятор материалов для строительства дома, относительно площади

Площадь дома: 50 м²

Полезные интерактивные сервисы — простой способ улучшить SEO.

Когда вы добавляете на сайт что-то практичное и вовлекающее — например, калькулятор битрейта для IP-камер, — пользователь не просто читает текст, а совершает осмысленное действие. Это увеличивает время пребывания на странице, снижает показатель отказов и сигнализирует поисковым системам: «Здесь действительно есть ценность». Такие инструменты не требуют сложной реализации, но заметно повышают качество сайта в глазах алгоритмов — особенно если они решают реальные задачи вашей аудитории.

Калькулятор битрейта для IP-камеры

Рекомендуемый битрейт: 4.0 Мбит/с

Трафик в час: 1.8 ГБ

Как это работает?

Схема простая:

  1. Пользователь двигает ползунок (input type="range").
  2. JavaScript ловит изменение и отправляет значение на сервер через fetch().
  3. PHP-скрипт получает площадь, применяет формулы (или читает нормы из БД) и возвращает JSON.
  4. JS подставляет полученные цифры в поля: доски, гвозди, крыша.

Всё происходит без перезагрузки. И да — это работает даже на Raspberry Pi в лесу, если у тебя локальный сервер.

HTML-разметка (без стилей)

Вот минимальная структура, которую можно вставить в статью или шаблон:

<h2>  Площадь дома: <span id="area-value">  50</span>   м²</h2>  
<input type="range" id="area-slider" min="20" max="200" step="10" value="50">  

<div>  
  <label>  Доски (м³): <input type="text" id="wood" readonly>  </label>  
</div>  
<div>  
  <label>  Гвозди (шт): <input type="text" id="nails" readonly>  </label>  
</div>  
<div>  
  <label>  Крыша (рулонов): <input type="text" id="roof" readonly>  </label>  
</div>  

JavaScript: отправка и обновление

<script>  
const slider = document.getElementById('area-slider');
const areaValue = document.getElementById('area-value');

slider.addEventListener('input', () =>   {
  const area = slider.value;
  areaValue.textContent = area;
  fetch('calculate.php', {
    method: 'POST',
    headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
    body: `area=${area}`
  })
  .then(res =>   res.json())
  .then(data =>   {
    document.getElementById('wood').value = data.wood.toFixed(2);
    document.getElementById('nails').value = Math.round(data.nails);
    document.getElementById('roof').value = data.roof;
  })
  .catch(err =>   console.error('Ошибка:', err));
});
</script>  

PHP: серверная логика

Файл calculate.php:

<?php
header('Content-Type: application/json; charset=utf-8');

$area = $_POST['area'] ?? null;
if (!is_numeric($area) || $area < 20 || $area >   200) {
    http_response_code(400);
    echo json_encode(['error' =>   'Некорректная площадь']);
    exit;
}

echo json_encode([
    'wood'  =>   $area * 0.8,
    'nails' =>   $area * 12,
    'roof'  =>   ceil($area / 25)
]);
?>  

Формулы можно заменить на запрос к базе: например, по project_id брать коэффициенты для разных типов домов.

Что можно улучшить?

  • Добавить несколько ползунков: этажность, тип фундамента, материал стен.
  • Хранить нормы расхода в MySQL и выбирать по ID проекта.
  • Сделать кэширование на клиенте, чтобы не слать запрос при каждом движении.
  • Добавить плавную анимацию обновления через anime.js — для красоты.

Заключение

Такой калькулятор — отличный способ показать пользователю ценность проекта «здесь и сейчас». Он не ждёт загрузки, не путается в формах, а просто двигает ползунок и видит результат. А ты — получаешь больше доверия и меньше вопросов вроде «а сколько мне надо досок на 120 метров?»

Всё это можно собрать за пару часов даже на чистом PHP и JS. Главное — не бояться экспериментировать.

Комментарии

Пока нет комментариев. Будьте первым!

Оставить комментарий

← Назад к списку статей

Важно: Блог-эксперимент

Блог только запустил, все статьи генерирую через нейросеть т.к. лень, возможны ошибки. Просто чтобы вы знали и не запускали ядерный реактор по моим статьям ))
Если у вас есть вопросы, или Нашли неточность? пишите в коментах — вместе поправим и сделаем статью более качественной. Я лично объясню нюансы из практики.

Посетителей сегодня: 0


кто я | книга | контакты без контактов

© Digital Specialist | Не являемся сотрудниками Google, Яндекса и NASA