nl2br() equivalent in javascript

nl2br() equivalent in javascript

本文关键字:in javascript equivalent nl2br      更新时间:2023-09-26

可能重复:
jQuery将换行符转换为br(nl2br等效(

目前,我为每个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());
    }
});

看看php.js上的nl2br,它似乎正是您想要的。基本上是:

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的值,这是我认为您正在寻找的,但我可能误解了(

第2版:
如果您想获得旧函数的行为(将<br/>插入#TextArea(,请执行以下操作:

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

这是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');
}