keyup and keydown are literally that. I can press and hold a, press b and then let go of a. This will give you: keydown: a, keydown: b:, keyup: b, keyup: a. You have to be able to deal with these events being 'out of order'....
I have successfully used http://refreshless.com/nouislider/ for quite a few projects. It's designed to work for both desktop and touch devices..