如何检测按下范围输入的换档键?

时间:2017-03-23 01:13:38

标签: javascript input dom-events

按下shift键时,我正在尝试同步两个滑块。 但是,问题是范围输入事件未定义e.shiftKey。

我尝试使用onmousedown事件,它会报告e.shiftKey,但它没有正确设置范围值。

如何检测是否在范围输入上按下了shift键?

$('input[type=range]').on("input",function(e){
	$('#value').text(this.value);
  if(e.shiftKey){
  	var newValue = this.value;
  	$('input[type=range]').each(function(){this.value=newValue});
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<html>
<body>
<input type="range">
<input type="range">
<span id="value"></span>
</body>
</html>

(jQuery是可选的,只是为了方便而使用它)

1 个答案:

答案 0 :(得分:1)

无论点击范围输入如何,都应该检查shiftKey:

var sync = false;
$(document).on('keydown', function(e) {
    if (e.shiftKey) {
        sync = true;
    }
});
$(document).on('keyup', function(e) {
    if (e.shiftKey == false) {
        sync = false;
    }
});
$('input[type=range]').on("input",function(e){
    $('#value').text(this.value);
    if (sync) {
        var newValue = this.value;
        $('input[type=range]').each(function(){this.value=newValue});
    }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<html>
<body>
<input type="range">
<input type="range">
<span id="value"></span>
</body>
</html>