Nl2br() эквивалент в javascript - программирование
Подтвердить что ты не робот

Nl2br() эквивалент в javascript

Возможный дубликат:
jQuery конвертировать разрывы строк в br (эквивалент nl2br)

В настоящее время я добавляю <BR> для каждого evt.which == 13. Есть ли nl2br() для JavaScript, поэтому я могу покончить с этим 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());
    }
});
4b9b3361

Ответ 1

Взгляните на nl2br на php.js, который кажется именно тем, что вы ищете. В основном это:

function nl2br (str, is_xhtml) {
    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');
}

EDIT:
ваш пример с использованием nl2br() может быть изменен следующим образом:

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

(обратите внимание, что это обновление #TextArea1 для каждого нажатия клавиши и не изменяет значение #TextArea, которое, как я думаю, вы ищете, но я могу быть недопониманием)

EDIT2:
Если вы хотите получить поведение вашей старой функции (с вставкой <br/> в #TextArea), выполните следующие действия:

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

Ответ 2

Вот функция nl2br в php.js.

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