【问题标题】:display text in multiline using text area [duplicate]使用文本区域在多行中显示文本[重复]
【发布时间】:2013-03-31 11:05:24
【问题描述】:

我在 html 中使用文本区域标签,我必须在单独的行中打印成分,但即使使用回车键,当我将文本区域的值传递给变量并打印它时,它也会出现在一行中。

以下是我的代码 sn-p :

<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>

请帮助我了解当用户按下回车键时如何获取不同行中的数据。提前谢谢。

【问题讨论】:

标签: javascript jquery html


【解决方案1】:

使用这个:

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

在文本区域中按“enter”键表示的字符用“\n”表示(有时也用\r 表示)。但是当以 HTML 显示时,它们在视觉上只是一个空格。要显示这些换行符,需要将它们替换为 HTML 等效元素 - &lt;br /&gt; 元素。

由于现在将&lt;br /&gt; 元素添加到#testing 元素的内容中,因此您需要使用.html(),而不是.text()。否则,HTML 会被转义,无法正常显示。

演示: http://jsfiddle.net/Wkbrn/2/

【讨论】:

  • @knut 我尝试使用替换功能,但它在 div 内容中显示
    标记以及字符串,并且仍然没有出现在单独的行中。
  • @user2185012 你有没有像我建议的那样使用$("#testing").html() 而不是$("#testing").text()?这是正确显示&lt;br /&gt; HTML 所必需的,我在答案中进行了解释
  • @lan 非常感谢。它成功了 :)
  • @knut:是的,我没有使用 .html,因此它不起作用。谢谢你:)
  • 为了更好地覆盖使用replace(/(\n|\r|\r\n)/g, '&lt;br&gt;') 而不仅仅是/\n\r?/g
【解决方案2】:

试试这个

<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>

我修改了脚本只是为了测试

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-01
    • 2023-04-08
    • 1970-01-01
    相关资源
    最近更新 更多