Javascript:在ie中动态添加onkeypress事件

时间:2009-10-11 13:20:16

标签: javascript internet-explorer

我正在尝试将onkeypress事件添加到动态创建的p元素中。这适用于Firefox,Opera和Chrome,但不适用于IE。

我的代码:

function newParagraphAfter(elem)
{
 blockElemId++;
 newPara = document.createElement("p");
 newPara.id = 'block_' + blockElemId;
 newPara.innerHTML = "Edit Here!";
 elem.parentNode.insertBefore(newPara, elem.nextSibling);
 document.getElementById('block_' + blockElemId).contentEditable = 'true';
 document.getElementById('block_' + blockElemId).focus();
 document.getElementById('block_' + blockElemId).onkeypress = function(event){return editKeypress(this, event)};
 document.getElementById('block_' + blockElemId).onkeydown = function(event){return editKeydown(this, event)};
 document.getElementById('block_' + blockElemId).onblur = function(){deleteIfBlank(this);};
}

添加id适用于所有浏览器,添加innerHTML也有效。更改背景颜色的测试(document.getElementById('block_' + blockElemId).style.backgroundColor = "#666";也适用于所有浏览器。

但是,添加onkeypress,onkeydown和onblur事件以及.focus()行的行在IE中不起作用。

提前感谢您的帮助,

尼科

更新:

如果可以避免使用jquery,我宁愿不要使用jquery,因为我希望能够修改项目中的所有代码,而不是使用任何第三方库。我还必须学习一种全新的编码方式,如果可以避免的话,我宁愿不去做。

contenteditable = 'true'行完美无缺。

1 个答案:

答案 0 :(得分:1)

看看这个:http://jsbin.com/uhiyi

在IE 8中正常工作......