Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Текстовое поле Miscrosoft Edge не запускает событие ввода при удалении одного символа новой строки

Автор вопроса: FanickОтветов: 2

Когда у вас есть текстовая область, содержащая один символ '\n', текстовая область не будет запускать событие ввода при удалении этого символа. В моем случае, когда я хочу обновить счетчик с количеством оставшихся символов, это поведение приводит к тому, что счетчик отображает неверную информацию.

Живая демонстрация https://jsfiddle.net/k594e6rt/5/

HTML:

<label>Go into this textarea to the last row and press backspace. It won't trigger the input event despite deleting a char. This demonstrates a bug in the Edge browser.</label><br/>
<textarea id="bug" rows="3"></textarea><br/>
<label>Log:</label><br/>
<div id="log">---<br/></div>

js:

/* setup */
var bug = document.getElementById('bug');
var problematicText = String.fromCodePoint(10); //newline
bug.value = problematicText

/* debugging setup */
var counter = 1;
var log = document.getElementById('log');

var logEvent = function logEvent(){
    log.innerHTML += (counter++ + ': input fired! <br/>');
}

bug.addEventListener('input', logEvent)

Изменить: версия Edge: 13.10586. Так что проблема, возможно, уже была исправлена ​​в последней версии.

Изменить 2: исправлено в Edge 14.14393.

  • Ваш jsfiddle работал с моим пограничным браузером. Нет проблем. user5542121 04.11.2016
  • Может быть, эта идея поможет, слушайте keyup или change вместо ввода. Кажется, это еще не идеально, caniuse.com/#feat=input-event. здесь можно найти проблему: developer.microsoft.com/en-us /microsoft-edge/platform/issues user5542121 04.11.2016

microsoft-edge

Ответы

Ответ 1 · user5542121

bug.addEventListener('keyup', logEvent)

keyup вместо input отлично работало в моей версии Edge. И я полагаю, что это должно работать в каждом браузере. За исключением таких вещей, как вставка правой кнопкой мыши. Так что это еще не решение всех ваших проблем. https://jsfiddle.net/cjztogvh/

Для справки, версия EDGE у меня 38.14393.0.0.

Ответ 2 · Fanick

Это было исправлено в Edge 14.14393.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы