onpropertychange检测用户操作

时间:2012-02-14 10:13:39

标签: javascript internet-explorer dom

要检测文本框中的更改,我必须在IE中使用“onpropertychange”(其他人使用“oninput”) “onpropertychange”的行为与“oninput”非常相似,但它也是由非用户行为触发的。 有没有办法找到“onpropertychange”是由用户操作引发的(下面列出)

  • 键盘输入
  • 删除
  • 从下拉列表框中选择

1 个答案:

答案 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;
} 
相关问题