2009-10-11 2 views
0

Я пытаюсь добавить событие onkeypress в динамически созданный элемент p. Это отлично работает в Firefox, Opera и Chrome, но не в IE.Javascript: динамически добавлять событие onkeypress, то есть

Мой код:

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"; также работал во всех браузерах.

Однако линии добавляющих OnKeyPress, OnKeyDown и ONBLUR событие, а также .focus() линии не работает в IE.

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

Нико

UPDATE:

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

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

+0

(не ответ на ваш вопрос, но * только * в случае, если вы не знаете об этом: это легко сделать с помощью таких вещей, как jQuery.) – Arjan

+1

Ошибка сценария (что остановило бы дальнейшую обработку), когда выполняется 'contentEditable = 'true''? Может быть, добавить рабочий пример в JS Bin? - http://jsbin.com – Arjan

+0

Я бы предпочел не использовать jquery по причинам, указанным выше. Я добавил рабочий пример в www.brokenmyriad.com/editor.php. Я попробовал JSbin, но код не работал в любом браузере. –

ответ

1

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

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

+0

Большое спасибо. Ваш ответ помог мне найти проблему в моем коде. –

+0

Рад я мог бы помочь –

+0

Так что в основном код с вопросом был в порядке, и проблема была в другом месте? – Arjan

Смежные вопросы