小编典典

在输入类型 =“文本”中键入时跟踪 onchange 的最佳方法?

all

根据我的经验,input type="text" onchange事件通常仅在您离开 ( blur) 控件后发生。

有没有办法强制浏览器在onchange每次textfield内容更改时触发?如果不是,那么“每年”跟踪这个最优雅的方法是什么?

使用onkey*事件并不可靠,因为您可以右键单击字段并选择粘贴,这将更改字段而无需任何键盘输入。

setTimeout唯一的方法吗?..丑:-)


阅读 107

收藏
2022-03-09

共1个答案

小编典典

更新:

请参阅另一个答案:
这几天听着oninput 感觉就像onchange不需要失去对元素的关注。它是 HTML5。

所有人(甚至是移动设备)都支持它,除了 IE8 及更低版本。对于 IE 添加onpropertychange. 我这样使用它:

const source = document.getElementById('source');
const result = document.getElementById('result');

const inputHandler = function(e) {
  result.innerHTML = e.target.value;
}

source.addEventListener('input', inputHandler);
source.addEventListener('propertychange', inputHandler); // for IE8
// Firefox/Edge18-/IE9+ don’t fire on <select><option>
// source.addEventListener('change', inputHandler); 
<input id="source">
<div id="result"></div>

2009 年原始答案:

那么,您希望onchange事件在 keydown、blur paste 时触发?那是魔法。

如果您想在输入时跟踪更改,请使用"onkeydown". 如果您需要用鼠标捕获粘贴操作,请使用"onpaste"(
IE ,
FF3 ) 和"oninput"(
FF, Opera, Chrome, Safari 1 )。

1在 Safari
上损坏。改为<textarea>使用textInput

2022-03-09