要检测文本框中的更改,我必须在IE中使用“onpropertychange”(其他人使用“oninput”) “onpropertychange”的行为与“oninput”非常相似,但它也是由非用户行为触发的。 有没有办法找到“onpropertychange”是由用户操作引发的(下面列出)
答案 0 :(得分:2)
没有。最好的办法是使用包装函数来更改文本框的值。
[编辑:可以使用getter和setter在IE 8及更高版本中执行此操作。见@ AndyE的评论]
现场演示(仅限IE):http://jsfiddle.net/4C6KL/
代码:
var textBox = document.getElementById("foo");
var changingValue = false;
textBox.onpropertychange = function() {
if (window.event.propertyName == "value" && !changingValue) {
// Do stuff here
}
};
function setTextBoxValue(val) {
changingValue = true;
textBox.value = val;
changingValue = false;
}