2011-07-23 109 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 –