2012-06-04 3 views
4

Я делаю кросс-браузерную форму, для которой требуется текстовое поле. Это текстовое поле получает данные два способов: - Отправка вызова Ajax на сервер и возвращают данные - введенных данные пользователяTextarea в IE8 Newline issue

http://jsfiddle.net/garrettwong/x3KSP/

У меня возникли проблемы на IE8, где текст текстового поля не отформатирован (новые строки не читаются), где, как и в Chrome, тот же код, хорошо форматирует текстовое поле. Я надеюсь использовать исключительно JavaScript-решение, если это возможно, но я не уверен, куда идти отсюда.

ответ

8

Почему вы используете text()? Установите значение с помощью val().

Новые линии, как правило, \n\r.

+0

Это сделало трюк. Заменяя вместо \ n \ r и используя val(). Благодаря! – Garrett

3

Просто используйте «\ r \ n» для новых линий.

+0

Это добавляет двойной перевод строки, почему бы не '\ r \ n'? –

+0

@vp_arth опечатка, исправлена ​​ –

6

делать операции замены, чтобы гарантировать, что есть \r перед каждым \n:

str = str.replace(/\r?\n/g, "\r\n"); 

Fiddle

Браузеры используют \r\n для разрыва строки, хотя современные браузеры, такие как Chrome и Firefox также может работать с Unix -style \n разрывы строк. Для IE8 требуются \r\n разрывы строк, которые также работают во всех других браузерах.

И как отметил @epascarello, используйте .val() для управления свойством текстового поля value.

+0

Спасибо! Это очень помогает! – Garrett

+0

Нет проблем, я просто обновил регулярное выражение для дальнейшего использования. –