2013-04-09 90 views
2

我在HTML中使用文本区域标记,我必须在单独的行中打印成分,但即使在使用回车键时,它将在单行中,当我将文本区域的值传递给一个变量并打印出来。使用文本区域在多行显示文本

以下是我的代码片段:

<div data-role="fieldcontain"> 
    <label for="name">Ingredients</label> 
    <textarea rows="4" cols="50" id="new_ingredients"> 

    </textarea> 
</div> 

$('#new_recipe').live('pagebeforeshow',function(event){ 
    var temp1 = $("#new_ingredients").val(); 
    $("#testing").text(temp1); 
}); 

<div data-role="page" id="new_recipe"> 
    <div class="content" id="testing" ></div> 
</div> 

请帮我,我怎么能得到不同的行数据时,用户按下提前进入key.Thank你。

+0

仅供参考生活()的支持与当前版本的http:// API。 jquery.com/live/ – swapnesh 2013-04-09 06:35:52

+1

看看这个:http://stackoverflow.com/questions/863779/textarea-line-breaks-javascript – 2013-04-09 06:37:11

回答

3

使用此:

$("#testing").html(temp1.replace(/\n\r?/g, "<br />")); 

由按下“输入”表示的字符在一个textarea密钥被表示为“\ n”(有时\r以及)。但是,当用HTML显示时,它们在视觉上仅仅意味着空间。要显示这些换行符,它们需要替换为与HTML等效的元素 - <br />

由于<br />元素现在被添加到#testing元素的内容中,因此您需要使用.html()而不是.text()。否则,HTML会被转义并且不能正确显示。

DEMO:http://jsfiddle.net/Wkbrn/2/

+0

@knut我试过使用替换功能,但它显示
标记在div内容与字符串,仍然不是分开的行。 – user2185012 2013-04-09 06:50:17

+0

@ user2185012您是否使用'$(“#testing”)。html()'而不是'$(“#testing”)。text()'就像我建议的那样?这是为了正确显示'
' HTML所必需的,我在回答中解释了 – Ian 2013-04-09 06:52:00

+0

@lan非常感谢。它的工作原理:) – user2185012 2013-04-09 07:02:34

0

试试这个

<script src='http://code.jquery.com/jquery-latest.min.js'></script> 
<div data-role="fieldcontain"> 
     <label for="name">Ingredients</label> 
     <textarea rows="4" cols="50" id="new_ingredients">ingredient1&#13;&#10;ingredient2&#13;&#10 
     </textarea> 
     </div> 

<script> 
$(document).ready(function(){ 
var temp1 = $("#new_ingredients").html().replace(/\n/g,"<br>");; 
$("#testing").html(temp1); 
}) 
</script> 

<div data-role="page" id="new_recipe"> 
<div class="content" id="testing" ></div></div> 

我修改剧本只是用于测试