Change/Input Events for HTML range inputs

Details of change and input event firing

 <input type="range" max="100" min="0" value="50">

jsfiddle example

BrowserChange EventInput Event
Chrome 47
  • Keyboard
    • fires immediately
  • Mouse
    • fires after mouse released
  • Keyboard
    • fires immediately
  • Mouse
    • fires as mouse drags
Edge 13
  • Keyboard
    • fires immediately
  • Mouse
    • fires after mouse released
  • Keyboard
    • fires immediately
  • Mouse
    • fires as mouse drags
Firefox 43.0.4
  • Keyboard
    • fires after blur (focus moved)
  • Mouse
    • fires after mouse released
  • Keyboard
    • fires immediately
  • Mouse
    • fires as mouse drags
IE 11
  • Keyboard
    • fires immediately
  • Mouse
    • fires as mouse drags
  • Keyboard
    • NOT fired
  • Mouse
    • NOT fired
Safari 9.0.2
  • Keyboard
    • fires immediately
  • Mouse
    • fires after mouse released
  • Keyboard
    • fires immediately
  • Mouse
    • fires as mouse drags
Safari iOS 9.2
  • fires after touch up
  • fires as slider is dragged
  • does NOT fire when VoiceOver enabled

 

Possible solutions

Track event firing

It seems that the input event will fire before the change event in cases where they are both fired. With this, it is possible to track if the input even has fired. If it has not fired, the change event handler is used to handle the event instead.

This jsfiddle example follows this scheme; however, in an actual implementation the portion of the handlers not involved in tracking event firing would be the same.