2016-08-19 2 views
3

IE11 uses onInput instead of onChange для <input type='range'> элементов.Диапазон изменения диапазона ввода IE11 onChange или onInput обходной путь

Реакция does not call either of these в IE11.

onChange работает на FF, Chrome и Edge, так что все в порядке.

После кроличьей норы вниз приводит here и here, которые предлагают использовать onMouseUp или onClick, но я не получил эту работу либо.

Я пробовал различные комбинации слушателей безрезультатно. Я даже пробовал this (и это тоже не сработало). У кого-то есть обходное решение для этого?

ответ

1

После небольшого рытья я поселился на react-range, так как он легкий, простой и работает.

render() в своем source показывает, как она делает это:

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 
    ); 
    } 

Update

Оказывается, что это будет исправлено в React 16: https://github.com/facebook/react/issues/554#issuecomment-271579096

Если вы посмотрите на историю выше, вы будете ee, что вопрос был закрыт # 5746. Если вы откроете этот PR, вы увидите, что его веха установлена ​​на 16.

Таким образом, исправление будет в 16, и мы не сможем поместить его в 15.x, потому что он вводит изменение в поведении.

Я не знаю, можно ли закрепить его до 15.x. @jquense и @nhunzaker, вероятно, смогут ответить на это.

Смежные вопросы