javascript中的nl2br()等价物[重复]

Posted

技术标签:

【中文标题】javascript中的nl2br()等价物[重复]【英文标题】:nl2br() equivalent in javascript [duplicate] 【发布时间】:2011-11-20 00:53:12 【问题描述】:

可能重复:jQuery convert line breaks to br (nl2br equivalent)

目前我为每个evt.which == 13 添加<BR>javascript 是否有 nl2br(),所以我可以取消这个 evt.which == 13

这与 php.js 有何不同

$('#TextArea').keypress(function(evt) 

    if (evt.which == 13) 

        var range           = $('#TextArea').getSelection();
        var image_selection = range.text;

        $('#TextArea').replaceSelection('<BR>');
        $('#TextArea1').html($('#TextArea').val());
    
);

【问题讨论】:

空白:前行; white-spac:pre-line;仅有助于渲染。如果您稍后将相同的值导出到 rtf,它会被丢弃。 这个问题可能会产生误导,因为它混合了两个不同的问题:nl2brevt.which == 13。真的keypressevt.which == 13(这是Enter Key 的事件代码)与将新行转换为HTML 的&lt;br&gt; 标记无关。 【参考方案1】:

看看nl2br on php.js,这似乎正是您要找的。基本上是:

function nl2br (str, is_xhtml) 
    if (typeof str === 'undefined' || str === null) 
        return '';
    
    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');

编辑: 您使用nl2br() 的示例可能会更改如下:

$('#TextArea').keypress(function(evt)
        $('#TextArea1').html(nl2br($('#TextArea').val()));
    );

(请注意,这会在每次按键时更新 #TextArea1,并且不会更改 #TextArea 的值,这正是我认为您正在寻找的,但我可能会误解)

EDIT2: 如果您想获得旧函数的行为(将&lt;br/&gt;s 插入#TextArea),请执行以下操作:

$('#TextArea').keypress(function(evt)
        $('#TextArea').html(nl2br($('#TextArea').val())); // replace linebreaks first
        $('#TextArea1').html($('#TextArea').val()); // copy to #TextArea1
    );

【讨论】:

它在 keypress/keup/keydown 上有效吗? 取决于您如何使用它 - 如果您显示更多代码可能会很有用,因此我可以提示如何集成它。 我通过 keypress/keup/keydown 执行此操作,它认为这就是它的作用,现在我可以将其作为 nlb2r() 回显吗? 你能在一分钟内回顾一下这个问题,用按键更新它 已经完成了,看看我的编辑,我将如何更改您的代码。【参考方案2】:

这是 php.js 中的一个函数nl2br。

function nl2br (str, is_xhtml) 
  // http://kevin.vanzonneveld.net
  // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
  // +   improved by: Philip Peterson
  // +   improved by: Onno Marsman
  // +   improved by: Atli Þór
  // +   bugfixed by: Onno Marsman
  // +      input by: Brett Zamir (http://brett-zamir.me)
  // +   bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
  // +   improved by: Brett Zamir (http://brett-zamir.me)
  // +   improved by: Maximusya
  // *     example 1: nl2br('Kevin\nvan\nZonneveld');
  // *     returns 1: 'Kevin<br />\nvan<br />\nZonneveld'
  // *     example 2: nl2br("\nOne\nTwo\n\nThree\n", false);
  // *     returns 2: '<br>\nOne<br>\nTwo<br>\n<br>\nThree<br>\n'
  // *     example 3: nl2br("\nOne\nTwo\n\nThree\n", true);
  // *     returns 3: '<br />\nOne<br />\nTwo<br />\n<br />\nThree<br />\n'
  var breakTag = (is_xhtml || typeof is_xhtml === 'undefined') ? '<br ' + '/>' : '<br>'; // Adjust comment to avoid issue on phpjs.org display

  return (str + '').replace(/([^>\r\n]?)(\r\n|\n\r|\r|\n)/g, '$1' + breakTag + '$2');

【讨论】:

它在 keypress/keup/keydown 上有效吗? 与keyperss无关。您可以在按键事件回调函数中使用它。 你能在一分钟内回顾一下这个问题,用按键更新它 +1 太棒了,谢谢!

以上是关于javascript中的nl2br()等价物[重复]的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript 等价于 ?? C#中的运算符[重复]

javascript JS nl2br

javascript / jquery中的uniqid()?

子进程中的python getoutput()等价物[重复]

SCSS中的LESS等价物[重复]

Javascript“var obj = new Object”在C#中的等价物