替换代码中的换行符,但仍然在textarea

时间:2018-06-04 00:21:11

标签: jquery

现在,我正在使用CMS在"设置"中显示textarea的内容。页面,在另一个页面上,但内容被复制到一些jQuery代码中:

$('textarea#envoi_contrat_conf').val('<cms:pages masterpage="gabarits.php" page_name="envoi-contrat-conferencier"><cms:show gabarit_content/></cms:pages>');

<cms:pages></cms:pages>标签之间的内容是&#34;设置&#34;中的文本区域中保存的内容。页。

但是现在,如果我在“设置”页面的文本区域输入此内容:

Hello
This is
A test

它将以相同的方式显示,在jQuery代码中保持换行符。所以它会打破它。我的代码看起来像这样:

    $('textarea#envoi_contrat_conf').val('Hello
This is
A test');

我需要的是确保将所有内容插入到&#34; val&#34; section,替换换行符,一旦在textarea中复制,仍会保留换行符。

如果这样的事情会起作用,我会很好:

    $('textarea#envoi_contrat_conf').val('Hello<br>This is<br>A test');

<br>在textarea内部无效。

有什么想法吗? 非常感谢!

有人联系到与我的问题无关的另一个话题。

另一位用户指出我正在寻找&#34; \ n&#34;而不是实际的换行符。谢谢他的帮助。

但现在我需要知道如何用&#34; \ n&#34;替换代码中的实际换行符。代替。由于它是CMS生成的内容,我无法对一个句子进行硬编码。因此,我需要确保即使用户在textarea内容中进行换行,它也会显示为&#34; \ n&#34;在jQuery代码中而不是代码中的实际换行符。

我试过了:

$('textarea#envoi_contrat_conf').val().replace(/\r\n|\r|\n/g,'\n');

成功地允许我用其他东西替换换行符,但是\ n要按原样打印,而不是渲染。感谢

2 个答案:

答案 0 :(得分:1)

解决方案

var str = `${$('textarea#envoi_contrat_conf').val()}`

Template Literals

不确定您在何处或如何获取具有多个换行符的字符串,但有一种方法可以在代码中使用此类字符串,而无需在整个过程中的任何位置进行修改。

  1. 但是你有这个字符串,它看起来像这样:

    "first segment
    second segment
    third segment"
    
  2. 将字符串存储在变量中,并通过将变量包装在`${...}`

    中将其插入为 Template Literal

    ` $ {

    变量中的多行字符串或函数返回

    } `

    注意:严重重音键(又名反引号):`位于每个QWERTY键盘的左上角(通常在下方) esc 键。)

  3. 这是 如何 ,现在是 为什么 。 Literal Strings是用单引号或双引号括起来的字符串的表示,是一种合胞的噩梦。模板文字表示包含在严重重音符号中的字符串,并具有语法糖,可以纠正Literal字符串语法导致的问题。一个重要的改进是字符串的中断不会破坏它的价值。

    `text line 1 
     text line 2`;
    
    "text line 1\n"+
    "text line 2";
    

    因此将字符串值包装在反引号中会使其成为模板文字。 ${ ... }组合将值或表达式插入到TL中。比较:

    模板文字插值

    `Template Literal interpolation: ${X} is easier to read and write, and " and ' are just normal characters`;
    

    文字字符串连接

    "Literal String concatenation: '+X+' is harder to read and write, and \" and \' have equal meaning so they must be escaped or used in nested combinations."
    

    演示

    var str = `${$('.text0').val()}`;
    
    $('.text1').val(str);
    <textarea class='text0' rows='5'>
    Hello
    This is
    A test
    </textarea>
    
    <textarea class='text1' rows='5'></textarea>
    
    
    
    
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

答案 1 :(得分:0)

知道了!

这是我使用的代码:

$('textarea#envoi_contrat_conf').val().replace(/\r\n|\r|\n/g,"\\n");

额外的反斜杠是第一个反斜杠,需要打印出来。 感谢Tibrogargan的帮助