Javascript onpropertychange检测用户操作
要检测文本框中的更改,我必须在IE中使用“onpropertychange”(“其他人使用oninput”) “onpropertychange”的行为非常类似于“oninput”,但它也是由非用户行为触发的。 是否有办法确定“onpropertychange”是否由用户操作触发(如下所列)Javascript onpropertychange检测用户操作,javascript,internet-explorer,dom,Javascript,Internet Explorer,Dom,要检测文本框中的更改,我必须在IE中使用“onpropertychange”(“其他人使用oninput”) “onpropertychange”的行为非常类似于“oninput”,但它也是由非用户行为触发的。 是否有办法确定“onpropertychange”是否由用户操作触发(如下所列) 键盘输入 削减 删除 粘贴 从下拉列表tipbox中选择 否。最好使用包装器函数更改文本框的值 [编辑:在IE8及以上版本中,可以使用getter和setter进行编辑。请参阅@AndyE的评论] 现场演
- 键盘输入
- 削减
- 删除
- 粘贴
- 从下拉列表tipbox中选择
+1,尽管在IE 8和9中,您可以代理
HTMLInputElement#value
和HTMLElement.setAttribute
的属性描述符,这将覆盖除重置之外,脚本更改元素值的任何情况。但对IE 7及更低版本没有帮助。编辑:(仅限IE8/9)。@AndyE:说得好。我忘了IE8支持这一点。当然,IE9有input
事件。包装成本太高了,对于IE6和IE7,我将只检查src元素是否有焦点。
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;
}