2011-07-23 52 views
2

我在textarea中輸入東西,當我按下一個按鈕後,我的JS將textarea輸入放入div標籤中。Textarea n到<br>沒有轉義

的問題是,當我在textarea的一個回車換行符,就像這樣:

Hi 

Goodbye 

它在div作爲

Hi<br><br>Goodbye 

出來當我使用Firebug檢查實際的HTML標記生活,我看到這在div:

Hi&lt;br&gt; &lt;br&gt; Goodbye 

這是一個函數,我發現應該取代newli網元與breaktags:

function nl2br (str, is_xhtml) { 
var breakTag = (is_xhtml || typeof is_xhtml === 'undefined') ? '\<br \/>' : '\<br>';  
return (str + '').replace(/([^>\r\n]?)(\r\n|\n\r|\r|\n)/g, '$1'+ breakTag +'$2'); 
} 

這是我如何使用它:

etext = $('#mytext').val(); 
etext = nl2br(etext,false); 
$('#mydiv').text(etext); 

但是正如你看到的,它不工作。

我該怎麼做?如果你需要更多的代碼,不要讓我知道

+0

「它不工作」 - 怎麼樣?這是什麼,你不期待。而且,不,我看不到,因爲你沒有舉出一個例子。 – Oded

+0

@Oded - 示例是帖子中的第一部分,「

」,之後我使用了nl2br函數 – Jeff

+0

@Oded - 我期待div有換行符,但實際上它有實際的中斷標籤。 – Jeff

回答

6

也許它會工作,如果你這樣做:

$('#mydiv').html(etext); 

...或者沒有框架:

document.getElementById("mydiv").innerHTML = etext; 

的問題是,text()是自動轉義您的標記字符:

我們需要注意的是,此方法轉義字符串提供爲必須使用才能在HTML中正確呈現。爲此,它調用 DOM方法.createTextNode(),它用它們的HTML實體替代特殊字符 (如& lt;對於<)。

+0

完美!謝謝! +1 – Jeff

+0

其中的一個「Aww,DOH!」瞬間..;) – Jeff

+0

其中一個「馬克被接受」的時刻..:P –