JavaScript API
Full description of range slider settings, methods and callbacks
A slider is built from a handle (also called a thumb, .irs-handle) that the user drags,
a value label above each handle (.irs-single, .irs-from, .irs-to),
a min label and a max label at the ends (.irs-min, .irs-max),
the interval bar (.irs-bar), which runs between the two handles in double type and from the left edge to the handle in single type,
the track the handles move along (.irs-line),
and the grid, which is tick marks (.irs-grid-pol) with grid labels (.irs-grid-text).
| Option | Defaults | Type | Description |
|---|---|---|---|
| Basic setup | |||
| type data-type |
"single" | string | Choose slider type, could be single - for one handle, or double for two handles |
| min data-min |
10 | number | Set slider minimum value |
| max data-max |
100 | number | Set slider maximum value |
| from data-from |
min | number | Start value of the from handle (the left one; the single handle in single type) |
| to data-to |
max | number | Start value of the to handle (the right one). Only in double type |
| Advanced setup | |||
| step data-step |
1 | number | Set the slider's step. Always > 0. Could be fractional. Values are rounded to the decimals of step, so min: 0.5, step: 1 gives 0.5, 2, 3 ... See step_from_min to keep the scale on min. |
| step_from_min data-step-from-min |
false | boolean | Count the steps from min instead of from zero. With min: 0.5, step: 1 the values are 0.5, 1.5, 2.5 ... instead of 0.5, 2, 3 ... Grid labels, handle limits and min_interval / max_interval follow the same scale; a value off the scale is moved to the nearest point. |
| values data-values |
[] | array | Set up your own array of possible slider values. Entries could be numbers or strings. When the array is set, min, max and step are ignored. A numeric-looking string is converted to a number unless values_raw is set. |
| values_raw data-values-raw |
false | boolean | Keep the values entries exactly as given: "20.0" stays "20.0" on the label, in the input value and in from_value / to_value. Without it a numeric-looking entry becomes the number 20. |
| keyboard data-keyboard |
true | boolean | Activates keyboard controls. Move left: ←, ↓, A, S. Move right: →, ↑, W, D. |
| Grid setup | |||
| grid data-grid |
false | boolean | Show the value grid below the slider. The first grid label is always visible, and so is the last unless the two would overlap on a very narrow slider; no two visible grid labels overlap. Every labelled tick names a value the handle can reach. |
| grid_margin data-grid-margin |
true | boolean | Add a grid margin on the left and right, half a handle wide, so the first and last grid labels line up with the handle centers. |
| grid_num data-grid-num |
4 | number | Number of grid units the value range is cut into, at most 50. A labelled tick sits at each unit boundary, with smaller unlabelled ticks between them (up to 28 units). The grid may use fewer or more units than this so that every labelled tick names a value the handle can reach: 1 to 4 with grid_num: 50 gives 3 units, and 0 to 100 with step: 10 and the default 4 gives 5. A fraction is rounded to the nearest whole number; if that is below 1, or the value is not a number, the grid uses 4. Ignored when grid_snap is on or values is used. |
| grid_snap data-grid-snap |
false | boolean | Use one grid unit per step (step param) instead of grid_num. Past 50 steps the grid still has at most 50 units, and each labelled tick names a value the handle can reach. |
| Interval control | |||
| drag_interval data-drag-interval |
false | boolean | Let the user drag the whole interval by its bar. Only in double type |
| drag_over_limit data-drag-over-limit |
false | boolean | Let a dragged handle push the other handle instead of stopping at it. Works with mouse and touch drag, respects min_interval, max_interval, from_fixed and to_fixed. Only in double type |
| min_interval data-min-interval |
0 | number | Smallest interval between the handles. 0 means no limit. Only in double type |
| max_interval data-max-interval |
0 | number | Largest interval between the handles. 0 means no limit. Only in double type |
| Handles control | |||
| from_fixed data-from-fixed |
false | boolean | Fix the position of the from handle. |
| from_min data-from-min |
min | number | Set the minimum limit for the from handle. |
| from_max data-from-max |
max | number | Set the maximum limit for the from handle. |
| from_shadow data-from-shadow |
false | boolean | Highlight the limits for the from handle. |
| to_fixed data-to-fixed |
false | boolean | Fix the position of the to handle. |
| to_min data-to-min |
min | number | Set the minimum limit for the to handle. |
| to_max data-to-max |
max | number | Set the maximum limit for the to handle. |
| to_shadow data-to-shadow |
false | boolean | Highlight the limits for the to handle. |
| UI control | |||
| skin data-skin |
"flat" | string | Choose the skin to use: flat, big, modern, round, sharp, square. |
| hide_min_max data-hide-min-max |
false | boolean | Hides min and max labels |
| hide_from_to data-hide-from-to |
false | boolean | Hide from and to labels |
| force_edges data-force-edges |
false | boolean | Keep the value labels, and the first and last grid labels, inside the container instead of letting them overhang its edges. |
| extra_classes data-extra-classes |
"" | string | Add extra CSS classes to the slider container |
| block data-block |
false | boolean | Locks slider and makes it inactive (visually). The keyboard does not move it either. input is NOT disabled. Can still be sent with forms. |
| Prettify numbers | |||
| prettify_enabled data-prettify-enabled |
true | boolean | Improve readability of long numbers. 10000000 → 10 000 000 |
| prettify_separator data-prettify-separator |
" " | string | Set up your own separator for long numbers. 10 000, 10.000, 10-000 etc. An empty string disables the separator. It groups only the digits before the decimal point; the decimals are never split. |
| prettify data-prettify |
null | function, string | Set up your own prettify function. Can be anything. For example, you can set up unix time as slider values and then transform them into readable dates. Can also be a string with the name of a global function. |
| prettify_grid data-prettify-grid |
null | function, string | Set up your own prettify function for the grid labels only. Falls back to prettify, then to default formatting. Not used in values mode. Can also be a string with the name of a global function. If it returns nothing (undefined or null) or throws, that label falls back the same way. |
| prettify_min_max data-prettify-min-max |
null | function, string | Set up your own prettify function for the min and max labels only. Falls back to prettify, then to default formatting. Not used in values mode. Can also be a string with the name of a global function. |
| prettify_all_values data-prettify-all-values |
false | boolean | In values mode, also run prettify on non-numeric entries. |
| prefix data-prefix |
"" | string | Set prefix for values. Will be set up right before the number: $100 |
| min_prefix data-min-prefix |
"" | string | Special prefix, used only for the minimum value. Will be shown before the min label. For example: From: 0 — 100 |
| max_prefix data-max-prefix |
"" | string | Special prefix, used only for the maximum value. Will be shown before the max label. For example: 0 — Up to: 100 |
| postfix data-postfix |
"" | string | Set postfix for values. Will be set up right after the number: 100k |
| max_postfix data-max-postfix |
"" | string | Special postfix, used only for the maximum value. Shown once the value reaches the maximum. For example 0 — 100+ |
| decorate_both data-decorate-both |
true | boolean | Used for "double" type and only if prefix or postfix was set up. Determine how to decorate close values. For example: $10k — $100k or $10 — 100k |
| values_separator data-values-separator |
" — " | string | Set your own separator for close values. Used for double type. Default: 10 — 100. Or you may set: 10 to 100, 10 + 100, 10 → 100 etc. |
| Data control | |||
| input_values_separator data-input-values-separator |
";" | string | Separator for double values in input value property. Default FROM;TO. Only for double type |
| disable data-disable |
false | boolean | Locks slider and makes it inactive. input is disabled too. Invisible to forms. |
| Callbacks | |||
| scope — |
null | object | Scope for callbacks. Pass any object. Callback will be executed like this: onChange.call(scope); |
| onStart — |
null | function | Callback. Is called once when the slider is created, before its first render. Edit the DOM from onInit instead. |
| onChange — |
null | function | Callback. Is called on each value change while the user interacts with the slider. Not called on update, reset or a container resize. |
| onFinish — |
null | function | Callback. Is called when an interaction ends: a handle is released (even without moving), the track is clicked, or a key is pressed. |
| onUpdate — |
null | function | Callback. Is called when the slider is modified by the update or reset method. |
| onInit — |
null | function | Callback. Is called once, right after the first render. For a slider that starts hidden, wait until it becomes visible before touching the DOM. |
Callback data
Every callback receives one object as its first argument:
{
"input": object, // jQuery reference to the input
"slider": object, // jQuery reference to the slider container
"min": 0, // MIN value
"max": 100000, // MAX value
"from": 10000, // FROM value
"from_percent": 10, // FROM value in percent
"from_value": null, // the entry at this index when values is used (null on a slider without values, also after update())
"from_min": null, // FROM minimum limit (null if unset)
"from_max": null, // FROM maximum limit (null if unset)
"to": 90000, // TO value
"to_percent": 90, // TO value in percent
"to_value": null, // the entry at this index when values is used (null on a slider without values, also after update())
"to_min": null, // TO minimum limit (null if unset)
"to_max": null, // TO maximum limit (null if unset)
"min_pretty": "0", // MIN formatted
"max_pretty": "100 000", // MAX formatted
"from_pretty": "10 000", // FROM formatted
"to_pretty": "90 000" // TO formatted
}
Every callback receives the same object, which the plugin rewrites on every change; copy it
(for example with $.extend({}, data)) if you need to keep a snapshot.
In values mode from and to hold the index of the selected entry, not the entry itself.
from_value and to_value hold the entry at that index, and from_pretty and
to_pretty hold its formatted label. min and max hold the first and last
index of the values array. A numeric-looking entry such as "20.0" comes back as the number 20 unless
values_raw is set.
Public methods
Calling ionRangeSlider() again on an input that already has a slider does nothing.
To change settings, take the instance from $(input).data("ionRangeSlider") and call update() on it.
// 1. Initialise the slider
$(".js-range-slider").ionRangeSlider();
// 2. Save the instance to a variable
var my_range = $(".js-range-slider").data("ionRangeSlider");
// 3. Update the slider (this will move the handles)
my_range.update({
from: 300,
to: 400
});
// 4. Reset the slider to its initial values
my_range.reset();
// 5. Destroy the instance
my_range.destroy();
Demos
Time to see some range sliders in action!
Demo
2.6.0