Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

html input range step as an array of values

I've been playing around with the input type=range for the first time, and ideally I'd like to set the step value to an array of values. I looked over the spec and I see the possibility for a datalist but it seams the data list is only used for highlight values in a range, so to speak, but not setting the values in the range.

So, something like this (ideally without a jQuery plugin, etc.):

<input type="range" min="1" max="100" value="0" step="1,3,5,10,20">
like image 483
Peter Dev Avatar asked Sep 06 '12 13:09

Peter Dev


2 Answers

You can achieve this by storing the values in an array and using the slider as the indexer for the array. This example will step through 1, 3, 5, 10, 20, 50, 100 as you slide.

HTML

<input id="input" type="range" min="0" value="0" max="6" step="1">
<div id="output"></div>

JS

var values = [1,3,5,10,20,50,100];    //values to step to

var input = document.getElementById('input'),
   output = document.getElementById('output');

input.oninput = function(){
    output.innerHTML = values[this.value];
};
input.oninput(); //set default value

Fiddle: http://jsfiddle.net/26xk026z/1/

like image 53
Karmacon Avatar answered Nov 24 '22 06:11

Karmacon


Karmacon's answer works just fine, but don't forget to add the attribute aria-valuetext to the input element. It will help screen readers read out the correct value.

MDN provides a good example: https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/ARIA_Techniques/Using_the_slider_role#Example_2_Text_Values

like image 24
angelozehr Avatar answered Nov 24 '22 04:11

angelozehr