2011-02-02 2 views
2

Я знаю, что мой вопрос очень похож на этот: jQuery text() function loses line breaks in IE, но мои потребности немного разные.Как сохранить разрывы строк в текстовом поле в jQuery?

У меня есть текстовая область на моей странице, в которой есть строка текста «шаблона», вводимая пользователем. (Позволяет им писать сообщение, используя% NAME% в качестве владельца места для имени.)

После того, как пользователь заканчивает «шаблон», я помещаю его во второе текстовое поле, которое фактически заменяет% NAME% на любое имя должен быть использован. У меня есть эта часть функции, и она отлично работает.

Вторая часть отлично работает в большинстве браузеров.

Однако в Internet Explorer линия, разбивающаяся с первого текстового поля, не сохраняется во втором. Так, например, если пользователь вошел в первое поле:

Hi %NAME%, 
How are you? 

И имя, чтобы заменить текст был «Зак», второе окно будет отображаться как:

Hi Zak,How are you? 

Мой код, чтобы получить текст во второй коробке:

var inviteTemplate=$('#invitationTemplate').text(); 
inviteTemplate=inviteTemplate.replace(/%NAME%/g,name); 
$('#invitationText').html(inviteTemplate); 

Я предполагаю, что проблема с использованием .text(), чтобы получить содержимое текстового поля. Есть ли способ, которым я могу заставить IE сохранить разрывы строк во второй текстовой области?

+2

попробуйте использовать .html() или .val() –

+0

Если это текстовые поля, то разве вы не должны использовать val(), а не text() или html()? –

+0

@Sime: о, извините. Я имел в виду textarea! – Zak

ответ

3

Я могу подтвердить, что в IE9 beta вы можете перенести текст из одного элемента TEXTAREA в другой элемент TEXTAREA с сохраненными разрывами строк.

Живая демонстрация:http://jsfiddle.net/LWjP6/1/

+0

Aha! Это была моя проблема. Когда я пытался использовать .val для первой текстовой области раньше, я сохранил вторую текстовую область как изменение .html() вместо .val(). Спасибо! – Zak

8

Вы читаете данные в виде текста и написание его как HTML. Вы пытались подставить символы новой строки с помощью тегов HTML BR? например

inviteTemplate = inviteTemplate.replace(/\n/g, '<br>'); 

Я уверен, что сделаю то, что вы хотите.

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