【问题标题】:how to tell if an input range element is increasing or decreasing while dragging如何判断输入范围元素在拖动时是增加还是减少
【发布时间】:2018-04-30 20:02:42
【问题描述】:

所以我有一些<input type="range"> 元素,我需要知道在用户拖动范围滑块时值是增加还是减少。到目前为止,我能够找到/实现的只是用户第一次触摸或释放滑块并将当前变化的值与最后一个数字进行比较时使用的东西,但这不起作用,因为它无法补偿何时用户仍在拖动。

有没有办法只使用 JS 数学来实现这一点?

【问题讨论】:

    标签: javascript slider react-native-android uislider


    【解决方案1】:

    我从this 帖子中发现,在捕获onInputonChange 事件方面看起来并不是这样。要捕捉滑块的每一个动作,请使用onInput。以下是说明的差异。

    您可以按照您的想法执行相同的逻辑,即保存最后一个值,然后检查当前值是小于还是大于最后一个值,以查看它是增加还是减少。

    编辑:请注意,如果您使用箭头键移动滑块,两个事件会同时触发。如果您使用鼠标,则只有在您停止移动并松开鼠标按钮时才会触发两者。

    var lastNum = 0;
    function onInput(value) {
      if(lastNum < value) {
          console.log("increasing");
      } else {
          console.log("decreasing");
      }
      lastNum = value;
      console.log("onInput: " + value);
    }
    
    function onChange(value) {
      console.log("onChange: " + value);
    }
    &lt;input type="range" oninput="onInput(this.value)" onchange="onChange(this.value)"&gt;

    【讨论】:

    • 哇!看起来我把事情复杂化了。我考虑过跟踪以前的更改,但没有这么简单。谢谢
    • @zero 我也在跟踪变化,但只是最后一个变化。所以你一开始是对的。
    猜你喜欢
    • 2014-01-11
    • 2021-08-25
    • 1970-01-01
    • 1970-01-01
    • 2020-03-08
    • 1970-01-01
    • 2022-06-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多