当你有一个包含单个字符'\n'
的textarea时,textarea在删除该字符时不会触发输入事件。在我想要更新具有剩余字符数的计数器的情况下,此行为会导致计数器显示错误信息。
现场演示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)
编辑边缘版:13.10586。 所以这个问题可能已经在最近的版本中修复过了。
编辑2:已在Edge 14.14393中修复。
答案 0 :(得分:0)
bug.addEventListener('keyup', logEvent)
keyup
代替input
在我的版本边缘中运行良好。我认为它应该适用于每个浏览器。除了右键单击粘贴之类的东西。所以它仍然没有解决你所有的问题。
https://jsfiddle.net/cjztogvh/
作为参考,我的EDGE版本是38.14393.0.0
答案 1 :(得分:0)
已在Edge 14.14393中修复。