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


键盘输入

删除

从下拉式提示框中选择

最佳答案

不能。最好的选择是使用包装函数来更改文本框的值。

[编辑:可以在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;
}

07-24 09:27