Возможный дубликат:
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()); } });
Взгляните на 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'); }
РЕДАКТИРОВАТЬ:
ваш пример с использованием nl2br()
может быть изменен следующим образом:
$('#TextArea').keypress(function(evt){ $('#TextArea1').html(nl2br($('#TextArea').val())); });
(обратите внимание, что это обновляет #TextArea1
на каждом нажатии клавиши и не меняет значение #TextArea
которое, как я думаю, вы ищете, но я могу быть недоразумением)
EDIT2:
Если вы хотите получить поведение своей старой функции (с вставкой <br/>
s в #TextArea
), выполните следующие действия:
$('#TextArea').keypress(function(evt){ $('#TextArea').html(nl2br($('#TextArea').val())); // replace linebreaks first $('#TextArea1').html($('#TextArea').val()); // copy to #TextArea1 });
Вот функция 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'); }