замените разрывы строк, чтобы заставить их работать с jquery

У меня есть следующий небольшой скрипт для предварительного просмотра текста перед его отправкой для хранения в базе данных:

jQuery(function($) {
    var input = $('#contents'),
    preview = $('#previewaccordion div.viewcontents');

    input.keyup(function(e) {
        preview.html(input.val());
    });
});

но если я набираю текст с разрывами строк, он игнорирует их и записывает все в одну строку. Как я могу заменить разрывы строк, чтобы они отображались правильно?


person Tamara    schedule 01.04.2012    source источник


Ответы (4)


Я предполагаю, что вы используете текстовое поле для ввода. В качестве разрывов строк используются символы \n, которые не имеют никакого значения в HTML. Поэтому вы должны заменить их на br-теги:

input.val().replace(/\n/g, "<br />");
person Daniel Rotter    schedule 01.04.2012
comment
Это заменит только первое вхождение разрыва строки, чтобы заменить все вхождения, вы должны использовать /\n/g - person Wessam El Mahdy; 12.02.2017

Это не имеет ничего общего с jQuery: разрывы строк в HTML не имеют значения, это просто пробелы (например, пробелы и табуляции).

Чтобы заставить разрыв строки в HTML, вы используете тег <br>. Таким образом, вы можете изменить

preview.html(input.val());

to

preview.html(input.val().replace(/\r?\n/g, '<br>'));

Обратите внимание, что вы также не экранируете специальные символы HTML (например, < или &), и поэтому, если вы их наберете, ваш вывод может быть неверным. Итак, вы можете пойти с:

preview.html(input.val().replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/\r?\n/g, '<br>'));

И, наконец, я бы зацепил keypress так же, как и keyup, чтобы вы видели символы, созданные с помощью повторения клавиш (которое запускает keypress, но не keyup).

Живой пример | источник

person T.J. Crowder    schedule 01.04.2012

Hiya демонстрация здесь: http://jsfiddle.net/STnhV/1/

надеюсь это поможет! ваше здоровье!

Код JQuery:

$(document).ready(function() {
    $('#inputfoo').keyup(function() {
       $('#outputbar').html($(this).val().replace(/\n/g,'<br/>')); 
    });
});

​
person Tats_innit    schedule 01.04.2012

Замените разрывы строк тегами разрыва html при отображении вывода из базы данных.

person Willem D'Haeseleer    schedule 01.04.2012