2011-02-02 88 views
2

我知道我的問題與此相似:jQuery text() function loses line breaks in IE,但我的需求稍有不同。如何在jQuery中保留textarea中的換行符?

我在我的頁面上有一個textarea,它有一個由用戶輸入的「模板」字符串。 (它讓他們編寫一條消息,使用%NAME%作爲名稱的佔位符)。

用戶完成「模板」之後,我將它放入第二個textarea,它實際上用任何名稱替換%NAME%應該使用。我已經涵蓋了這部分功能,並且它完美地工作。

第二部分也適用於大多數瀏覽器。

但是,在Internet Explorer中,第一個textarea的換行符不會保留到第二個。因此,舉例來說,如果用戶進入第一箱:

Hi %NAME%, 
How are you? 

和名字來代替文字是「扎克」,第二個框將顯示爲:

Hi Zak,How are you? 

我的代碼來獲得文成第二個框是:

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

我假設的問題是使用.text()得到textarea的內容。有什麼辦法可以讓IE保留第二個textarea的換行符?

+2

嘗試使用.html()或.val() – 2011-02-02 02:40:39

+0

如果這些是文本框,那麼你不應該使用val()而不是text()或html()? – 2011-02-02 02:42:51

回答

3

我可以確認,在IE9測試版中,您可以將文本從一個TEXTAREA元素傳輸到保留換行符的另一個TEXTAREA元素。

現場演示:http://jsfiddle.net/LWjP6/1/

8

您正在閱讀的數據,文本和寫它作爲HTML。你試過用HTML BR標籤代替換行符嗎?例如

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

我敢肯定,會做你想做的。