Заменить пункт тегом <br/"> в div с contenteditable

Как поместить <br /> только в div contenteditable, пока пользователь нажимает клавишу ENTER? Я должен управлять содержимым этого div в XML после отправки, но некоторые браузеры переводят новые строки как <p>, некоторые (в Google Chrome) в качестве <div>.

Хорошим решением станет заставить новые строки одинаковыми во всех браузерах (только <p> или только <div>).

PS: Я использую jQuery и PHP.

Ответ 1

Как насчет захвата события клавиатуры пользователя нажатием клавиши Enter?

Ответ 2

Не уверен, но обратите внимание, что <shift> <enter> обычно вставляет символ < br/" > , я belive.

Интересно, можете ли вы заставить сдвиг в onKeypress?

Ответ 3

Попробуйте следующее: <div contenteditable="true">test1<div></div></div>

Вы можете форсировать одноразовый интервал, когда вы нажимаете return в редактируемом для контента элементе, высевая его внутренним DIV следующим образом:

Ответ 4

div {white-space: pre};

"белое пространство"   Значение: нормальное | pre | nowrap | предварительная упаковка | pre-line | унаследовать   Начальное: нормальное   Применяется к: всем элементам   Унаследовано: да   Процентное: N/A   Медиа: визуальное   Вычисленное значение: как указано

Это свойство объявляет, как выполняется свободное пространство внутри элемента. Значения имеют следующие значения:

нормальный   Это значение позволяет агентам пользователя сбрасывать последовательности пробелов и разрывать строки, если необходимо, для заполнения строк. до   Это значение не позволяет агентам пользователя сбрасывать последовательности белого пробела. Линии только разбиваются на новые строки в источнике или на вхождениях "\ A" в сгенерированном контенте. Nowrap   Это значение сокращает пробел, как для "нормального", но подавляет разрывы строк в тексте. предварительно обертка   Это значение не позволяет агентам пользователя сбрасывать последовательности белого пробела. Строки разбиты на строки новой строки в источнике, при появлении "\ A" в сгенерированном контенте и, если необходимо, для заполнения строк. до линии   Это значение позволяет агентам пользователя сбрасывать последовательности пробелов. Строки разбиты на строки новой строки в источнике, при появлении "\ A" в сгенерированном контенте и, если необходимо, для заполнения строк.

Новые строки в источнике могут быть представлены возвратом каретки (U + 000D), линией перевода (U + 000A) или обоими (U + 000D U + 000A) или каким-либо другим механизмом, который идентифицирует начало и конец документа сегментов, таких как маркеры SGML RECORD-START и RECORD-END. Модель обработки "белого пространства" CSS предполагает, что все новые строки были нормализованы для линейных каналов.

Пример (ы):

В следующих примерах показано, какое поведение белого пространства ожидается от элементов PRE и P и атрибута nowrap в HTML.

pre {white-space: pre} p {white-space: normal} td [nowrap] {white-space: nowrap}