2010-09-21 5 views
3

У меня есть div с contenteditable, который должен вызывать < br /> insert на «enter». Все работает отлично в IE, но Firefox сводит меня с ума.Div contenteditable и нажатие «enter» на FF

this.e.keydown(function(event) { 
    if(event.keyCode == 13) { 
    var execute = editor.insertHTML(\'<br />\')'; 
    eval(execute); 
    return false; 
    } 
}); 

Firefox игнорирует < бр /> в конце DIV, и я думаю, в начале, тоже. Значит, если я нажимаю «вводить» в середине предложения, он работает так, как должен. Пробовав то же самое в конце предложения (самого последнего), он терпит неудачу.

Любые идеи? Та же проблема, которую мы имеем в StackOverflow редактора предпросмотре :-)

Нажмите «Enter» в конце> не в состоянии ... нажмите «введите» одна буква ранее> символ новой строки

+1

Такая же проблема: http://stackoverflow.com/questions/3080529/make-a-br-instead-of-div-div-by-pressing -enter-on-a-contenteditable – Thom

+0

ВставитьHTML (\ '
& nbsp \') '; исправляет это временно, но вызывает уродливые nbsp ... – Thom

+0

Посмотрите мой ответ на http://stackoverflow.com/questions/3080529/make-a-br-instead-of-div-div-by-pressing-enter-on -a-contenteditable –

ответ

1

Добавьте эту функцию вместо

this.e.keydown(function(event) { 
    if (event.keyCode == 13 || event.charCode == 13) { 
     var execute = editor.insertHTML(\'<br />\')'; 
     eval(execute); 
     return false; 
    } 
}); 

FF считывает charCode вместо keyCode.

0

Вы можете попробовать вставить <br /><span></span>. Это перемещает курсор на следующую строку, но не изменяет размер контейнера так, чтобы он не был идеальным.

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