JavaScript-калькулятор с использованием jQuery-слайдера (ползунка)

jquery sliderЕще одна заметка про калькуляторы, теперь про использованием давно уже ставших популярными интерактивных элементов управления типа слайдер/slider/ползунок.

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

В данном случае рассмотрим далекий от реальности пример, но достаточный чтобы понять простые основы использования слайдеров в калькуляторе.

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

У слайдеров есть максимальное и минимальное значение, а также величина шага.
В данном примере min, max — 1-5, 6-10, и шаг в единицу.

Вызов своей функции при движении слайдера

Некоторой особенностью этого примера является вызов нашей кастомной считающей функции calc(); в событии slide. Таким образом при каждом движении слайдера все результаты расчетов будут пересчитываться и обновляться в сводной таблице.

Как поменять внешний вид слайдеров

FireBug-ом легко заметить обилие css-стилей навешанных на элементы слайдера, это означает что править их на свои мы можем простым переопределением с ключевым словом !important;
Так в этом примере уменьшен общий размер элементов слайдера за счет переопределенного стиля:
.ui-widget{font-size: 0.6em !important;}

Примечание: чтобы такой трюк сработал, ваши css-стили должны подгружаться позже родных от jQuery.

Совместимость с браузерами

Тестировалось во всех популярных. Единственный вызвавший ошибку — Internet Explorer:
<strong>Сообщение: Объект не поддерживает это свойство или метод
Строка: 46
Символ: 2
Код: 0</strong>
Оказалось, что причина в необъявленной переменной summ.

Код скрипта калькулятора

Код калькулятора

Пример работы

Пример работы калькулятора на отдельной странице.

Официальная документация

  1. Описание API jQuery Slider
  2. Различные примеры и demo использования jQuery Slider

Комментариев: 29

  • 19.05.2011 Ольга:

    Здравствуйте, подскажите чайнику, куда вставлять javascript код из скрипта калькулятора, в какое конкретно место html страницы??? спасибо большое!

  • 19.05.2011 Кирилл:

    Конкретно саму html-форму калькулятора нужно вставлять между тегами

    <body>...</body>

    а считающий данные из формы javascript-код между тегами

    <head>...</head>

    Именно так сделано в калькуляторе, описанном в этой статье.

  • 25.05.2011 Alexis:

    Возникает ошибка при использовании в FF 3.6.17 на сайте под Joomla! 1.6: толщина ползунка уменьшается при его перемещении вплоть до полного исчезновения.

    Не подскажете, в чем проблема?

    • 25.05.2011 Кирилл:

      Кроме конфликта со стилями шаблона сайта идей пока нет.

      • 26.05.2011 Alexis:

        Да, похоже. Теперь осталось выяснить, как этот конфикт решить. Спасибо все равно!

  • 27.08.2011 Роман:

    Подскажите пожалуйста как решить проблему с ошибкой в IE?

    ...

    все вроде разобрался

    • 27.08.2011 Кирилл:

      Что за ошибка? Как починили, если не секрет?

      • 28.08.2011 Роман:

        Ошибка про явное объявление переменной) она просто закоментирована в коде)))

  • 30.08.2011 Роман:

    Подскажи пожалуйста, есть такая необходимость, чтобы два slider'a двигались одновременно, т.е. переключаем на одну позицию один из ползунков, а второй автоматически переключается на такое же значение. Значения берутся из select-box'a.

  • 31.08.2011 Роман:

    Да плохо быть нубом)) Может на примере легче будет до меня донести, два селекта функцию нашел как связывать, но вот слайдеры все равно каждый по себе, подскажите что не так? мне нужно связать верхний и нижний слайдеры.

  • 05.11.2011 Алек:

    Подскажите пжл как сделать чтобы скрипт работал в IE? Работает в FF, Operа и т.д — ползунки двигаются — показывается цифра над ползунком=считается сумма, но в IE (8 и 9)не двигаются ползунки — т.е. цифры выбрать невозможно и сумма не считается (точнее считается от установленных min значений- которые не изменяются, т.к. ползунок не двигается). Не работает именно графическая часть в IE.

    Что сделать чтобы в IE работало?

    • 05.11.2011 Кирилл:

      Да, действительно в IE>8 слайдеры не работают, похоже это баг, что с этим сделать пока не нашел.

  • 19.05.2012 Alex:

    Реально классный калькулятор! Обязательна воткну на www.potolokmoscow.ru в админку для работы endusera. Успехов!

  • 28.06.2012 Natali:

    а у меня слайдер очень странно работает. вроде все подключила. код просто отсюда взяла (он ведь рабочий). но ползунок не ездит, хотя значения меняются... вообще не знаю что делать... может кто что подскажет. сайт пока нулевый, вот пытаюсь этот модуль настроить, чтобы работал. сайт ngmf.ru (это если посмотреть ошибку). Помогииииитеее))

  • 28.06.2012 Natali:

    все. я разобралась))) заработало у меня все)))

    • 28.06.2012 Кирилл:

      Рассказывайте теперь в чем было дело ;)

      • 29.06.2012 Natali:

        в скрипте не хватало нескольких функций. или я их не подцепила или что-то еще. вобщем добавила

        function calc(par){
        type = document.cl_form.type.value;
        amount = document.cl_form.amount.value;
        amount2 = document.cl_form.amount2.value;
        //var summ;
        summ = Number(type) * ( Number(amount) + Number(amount2) );
        document.cl_form.summ.value=summ;
        document.getElementById("typetd").innerHTML=type;
        document.getElementById("amounttd").innerHTML=amount;
        document.getElementById("amount2td").innerHTML=amount2;
        document.getElementById("summ").innerHTML=summ;
        return false; 
        }

        и все заработало)


Добавление комментария:

 css.php