我有一个页面,我通过AJAX生成textareas并触发事件,如果这些textareas被更改。这适用于IE9 +和其他浏览器,如Firefox,Chrome,Safari等。问题是IE8及以下。他们不会解雇变更事件。代码是:
Textarea看起来像:
<textarea name="answer8158" id="answer8158"></textarea>
Javascript看起来像:
document.observe('change', function(e, el) {
if (el = e.findElement('textarea')) {
//Do Something
}
});
是否有解决方法使更改事件有效?我可以使用PrototypeJS或纯JavaScript解决方案。
感谢。
答案 0 :(得分:0)
解决方案是回到AJAX中对onchange事件进行硬编码。遗憾的是,文档观察(模糊/更改)对IE8及以下版本不起作用。不是我喜欢编写代码,而是我找到的唯一解决方案。
答案 1 :(得分:0)
您应该详细解释如何使用AJAX响应,以下在使用Prototype.js v 1.7.1的IE 6中可以正常工作。我已经使用DOM和innerHTML来模拟你在使用AJAX响应时所做的事情:
<script type="text/javascript" src="prototype.js"></script>
<script type="text/javascript">
document.observe('change', function(e, el) {
if (el = e.findElement('textarea')) {
alert(el.value);
}
});
function addTextarea(el){
var ta = document.createElement('textarea');
ta.name = 'ta2';
el.parentNode.insertBefore(ta, el.nextSibling);
}
function addTextarea2(){
document.getElementById('s0').innerHTML = '<textarea></textarea>';
}
</script>
<textarea name="answer8158" id="answer8158"></textarea><br>
<button onclick="addTextarea(this);">Add using DOM</button><br>
<button onclick="addTextarea2();">Add using innerHTML</button><span id="s0"></span>
如果您以编程方式更改值并期望触发更改事件,则完全不同。顺便说一句,我会把观察者写成:
document.observe('change', function(e) {
var el = e.findElement('textarea');
if (el) {
alert(el.value);
}
});
这只是一些额外的字符,而且更清晰。