Javascript: динамически добавлять событие onkeypress в ie - PullRequest
0 голосов
/ 11 октября 2009

Я пытаюсь добавить событие 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);};
}

Добавление идентификатора работает во всех браузерах, и добавление innerHTML также работает. Тест на изменение цвета фона (document.getElementById('block_' + blockElemId).style.backgroundColor = "#666"; также работал во всех браузерах.

Однако в IE не работают строки, добавляющие события onkeypress, onkeydown и onblur, а также строка .focus().

Заранее спасибо за любую помощь,

Nico

UPDATE:

Я бы предпочел не использовать jquery, если этого можно избежать, просто потому, что мне нравится иметь возможность изменять весь код в моих проектах, а не использовать какие-либо сторонние библиотеки. Мне также пришлось бы освоить совершенно новый способ кодирования, который я бы предпочел не делать, если его можно было бы избежать.

Линия contenteditable = 'true' работает отлично.

1 Ответ

1 голос
/ 11 октября 2009

Посмотрите на это: http://jsbin.com/uhiyi

Отлично работает в IE 8 ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...