Home > Software design >  HTML input type range (slider) with negative value
HTML input type range (slider) with negative value

Time:10-22

I'm working with slider <input type="range" /> with:

  • minimum value: -20
  • maximum value: -90
  • step : 15
  • the value should be: -20, -35, -50, -65, -80
  • the value of -90 will never reached because of the step constraint.

It works with positive value (min: 20, max: 90, step: 15) but I don't have an idea dealing with negative value.
Can you help me?

Screenshot

See & modify my sandbox (just a vanilla HTML & JS)

CodePudding user response:

Set min value to -80 and add padding-left to the slider to let the user think that -90 is the min value.

const sliders = document.querySelectorAll("input[type=range]");

for (const slider of sliders) {
  slider.addEventListener('change', (e) => {
    e.target.nextElementSibling.value = e.target.value;
  });

  slider.nextElementSibling.value = slider.value;
}
input {
  padding-left: 15px;
}
<input type="range" min="-80" max="-20" step="15" />
<output></output>
<iframe name="sif1" sandbox="allow-forms allow-modals allow-scripts" frameborder="0"></iframe>

CodePudding user response:

You cannot do it by simply using HTML as -90 is lower than -20 so you cannot set min="-20" max="-80". But by using this trick you may achieve your output.

Keep the HTML as:

<input type="range" min="20" max="90" step="15"/>
<output></output>

Change your JavaScript to:

for (const slider of sliders) {
  slider.addEventListener("change", (e) => {
    e.target.nextElementSibling.value = "-"   e.target.value;
  });

  slider.nextElementSibling.value = "-"   slider.value;
}
  • Related