当脚本修改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仍然支持该事件。)
最佳答案
更改输入中的值不会触发DOMAttrModified
事件,仅此而已。
您需要更改输入节点的属性,而不是变量的属性。
就像difference between the two jQuery functions: .prop
and .attr
读: