2012-11-07 103 views
1

我想使用多行文本框將文本插入顯示爲html的表格中。我想用javascript將文本框內的文本找到,並找到用戶按下的位置,並在該位置放置「<br/>」,這樣當文本顯示時它將顯示換行符。關於如何做到這一點的任何想法?用多行文本框替換換行符<br/>

我試過這樣的東西,但沒有奏效。

var text = document.getElementById("announcementid").value; 


      var newtext = text.replace("\n", "<br/>"); 

      text = newtext; 
+0

只是要注意,這種處理應做服務器端,而不是客戶端的JavaScript。 (假設它以某種方式存儲在服務器上)。 –

+0

@Brad這句話不一定是真的。有幾個原因爲什麼應該在客戶端執行這樣的處理...... –

回答

0

文本是一個原語,所以它不會取代該值。使用正則表達式來全局替換,而不是僅更換第一個實例:

var text = document.getElementById("announcementid").value; 
var newtext = text.replace(/\n/g, "<br />"); 
document.getElementById("announcementid").value = newtext; 
+1

甚至可能使用'/ [\ r \ n] +/g'。 –

+0

@BradChristie沒有必要,因爲新行被視爲與另一個角色一樣。這可以在所有瀏覽器下運行。 –

3

newtext變量結束了從announcementid元素是原始字符串的副本。因此,你需要重新-set原始文檔元素的value屬性:

var text = document.getElementById("announcementid").value; 
    var newtext = text.replace(/\n/g, "<br />"); 
    document.getElementById("announcementid").value = newtext; 

而且,康斯坦丁指出,在JavaScript中replace()功能只會除非你通過更換初審一個全球正則表達式。

Fiddle example