反应范围输入IE11 onChange或onInput变通方法

时间:2016-08-19 20:27:38

标签: javascript html5 reactjs

<input type='range'>元素的IE11 uses onChange instead of onInput

在IE11中反应does not call either of these

onInput适用于FF,Chrome和Edge,因此可以。

沿着兔子洞向下引导herehere,建议使用onMouseUponClick,但我还没有得到这个。

我尝试过各种听众组合无济于事。我甚至试过this(当然,它也没有用)。有人有解决方法吗?

1 个答案:

答案 0 :(得分:1)

经过一番挖掘后,我已经确定了react-range,因为它轻巧,直接且有效。

source中{p> render()显示了它是如何做到的:

render: function() {
    var props = _extends({}, this.props, {
      defaultValue: this.props.value,
      onClick: this.onRangeClick,
      onKeyDown: this.onRangeKeyDown,
      onMouseMove: this.onRangeChange,
      onChange: function() {},
      ref: this.setRangeRef
    });
    delete props.value;
    return React.createElement(
      'input',
      props
    );
  }

<强>更新

看来这将在React 16中修复:https://github.com/facebook/react/issues/554#issuecomment-271579096

  

如果您查看上面的历史记录,您会看到该问题已被#5746关闭。   如果您打开此PR,您将看到其里程碑设置为16。

     

所以修复将在16,我们不能把它放在15.x中,因为它引入了行为的重大变化。

     

我不知道是否可以将其向后移植到15.x. @jquense和@nhunzaker很可能会回答这个问题。