Подтвердить что ты не робот

Как заменить \n на <br/"> на JavaScript?

У меня есть текстовое поле, в которое я вставляю \n при нажатии пользователем. Код из этого текстового поля отправляется в службу WCF через jQuery.ajax(). Я не могу сохранить \n в БД, поскольку он не будет отображаться в других приложениях, потребляющих службу.

Как заменить \n тегом <br />?

Решение

Хорошо, многие из вас пробовали, а некоторые получили право с Javascript Regex с /g (глобальный модификатор). В конце я дважды вставлял \n, я не знаю, почему, я только предполагаю, что jQuery в событии keypress создан double\n, который я отлаживаю.

$('#input').keypress(function (event) {
    if (event.which == '13') {
        inputText = $('#input').val() + '\n';
        $('#input').val(inputText);
    }
});
4b9b3361

Ответ 1

Заменить глобальную область

$('#input').val().replace(/\n/g, "<br />")

или

$('#input').val().replace("\n", "<br />", "g")

Ответ 2

это можно сделать следующим образом:

$('textarea').val().replace(/\n/g, "<br />");

edit: извините... регулярные выражения в javascript не должны цитироваться

рабочий пример

Ответ 3

Как сказано в комментариях и другом ответе, лучше сделать это на стороне сервера.

Однако, если вы хотите знать, как это сделать на клиентах, это одно простое исправление:

textareaContent.replace(/\\n/g, "<br />");

Где textareaContent - переменная с данными в текстовом поле.

Изменить: Изменено так, что оно заменяет глобально и не только первое совпадение.

Ответ 5

Основываясь на других ответах, это, вероятно, лучше всего работает php. Теперь, предполагая, что вы не хотите использовать ajax (что было бы бессмысленным и вызвать ненужную нагрузку на сервер), вы должны, вероятно, использовать phpjs.org порт javascript эта функция:

function nl2br (str, is_xhtml) {
    // Converts newlines to HTML line breaks  
    // 
    // version: 1103.1210
    // discuss at: http://phpjs.org/functions/nl2br    // +   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\nvan\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: '\nOne\nTwo\n\nThree\n'    var breakTag = (is_xhtml || typeof is_xhtml === 'undefined') ? '' : '<br>';

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

http://phpjs.org/functions/nl2br:480

Ответ 6

Вы можете использовать простую функцию строки javascript.

 string.replace("\n", "<br>")

Ответ 7

В вашей службе WCF вы можете не просто использовать String.Replace?

text = text.Replace("\n","<br />");

Ответ 8

var replaced = $('#input').val().replace("\n", "<br/>");

Ответ 9

вы можете использовать javascript, встроенный в функцию replace, с небольшой помощью regex, например

$('#input').val().replace(/\n\r?/g, '<br />')

этот код вернет все вхождения, замененные на <br>

Ответ 10

Ниже будут заменены все экземпляры \n на <br />:

while (message.indexOf("\\n") !== -1) {
   message = message.replace("\\n", "<br />");
}