我正在尝试在脚本修改input
元素(文本字段)时触发事件处理程序。在Internet Explorer上,我可以使用onpropertychange
事件,但在Firefox和其他浏览器上不是这样的事。所以,根据W3C docs,似乎DOMAttrModified
事件完全符合我的要求。但它并没有在Firefox 11
中发射。
这是一个简单的代码片段,可以重现问题。我有一个输入文本字段,以及一个向输入文本字段的value
属性添加字符的按钮。点击add char
按钮会导致DOMAttrModified
事件触发:
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript">
function addChar() {
var q = document.getElementById("query");
q.value += "X";
}
function loadevents() {
var q = document.getElementById("query");
q.addEventListener("DOMAttrModified", function() {alert("DOMAttrModified event!");
}, false);
}
</script>
</head>
<body onLoad="loadevents()">
<input type="text" id="query">
<br>
<input type="submit" value="add char" onclick="addChar()">
</body>
</html>
但事实并非如此。知道我做错了什么吗? (我知道DOM Level 3 弃用这个事件,但现在似乎没有可行的替代方案。据我所知,Firefox 11仍然支持它。)
答案 0 :(得分:7)
更改输入中的值不会触发DOMAttrModified
事件,这就是全部..
您需要更改输入节点的属性,而不是变量的属性。
这就像difference between the two jQuery functions: .prop
and .attr
阅读: