js заменяет n на и показывает

#javascript #jquery #html

#javascript #jquery #HTML

Вопрос:

У меня есть текстовое поле для ввода и show-div для отображения ввода:

 <textarea id="inputtext" style="height:100px"></textarea>

<button id="show">show in div</button>

<div id="showtext">

</div>
 

и мой js:

 $(function(){
 $('#show').on('click',function(){
    var text = $.trim($('#inputtext').val());
    text = text.replace(/r?n/g, "<br />").replace(/<brs*[/]?>/gi, "n");
    $('#showtext').text(text);
 });
});
 

Я хочу, чтобы, если вы дадите:
a
b
c

он также должен отображаться в этой форме. но он показывает сейчас: a b c .

вот моя скрипка: http://jsfiddle.net/5gkak /

что я делаю не так?

Комментарии:

1. Вы заменяете все разрывы строк <br /> на, а затем сразу же заменяете все <br /> обратно на разрывы строк, что немного сбивает с толку.

2. Я в замешательстве. Что вы на самом деле заменяете на что?

3. В любом случае, вас может заинтересовать решение только для CSS. jsfiddle.net/5gkak/2

4. @Juhana Это классное решение, но зачем вообще нужен css? jsfiddle.net/5gkak/3

5. @edhedges Потому pre что не делает то же самое. jsfiddle.net/5gkak/4

Ответ №1:

Вам нужно изменить свою скрипку, чтобы соответствовать этому: http://jsfiddle.net/5gkak/1 /

 $(function(){
    $('#show').on('click',function(){
        var text = $.trim($('#inputtext').val());
        text = text.replace(/r?n/g, "<br />");
        $('#showtext').html(text);
    });
});
 

То, что у вас было, заменяло на n , <br /> а затем делало то же самое в обратном порядке, поэтому <br /> заменялось на n . Также вам нужно было установить html #showtext . Проверьте разницу .text и .html в документах jQuery.

Существуют и другие варианты (они взяты из разделов комментариев к вопросу):

  • Только для CSS (для форматирования): http://jsfiddle.net/5gkak/2 / (это самое крутое решение, ИМО)
  • Только для Html (для форматирования): http://jsfiddle.net/5gkak/3 / (это работает не для всего текста!)

Комментарии:

1. @doniyor нет проблем, если этот ответ работает для вас, обязательно примите его, чтобы он не отображался как неотвеченный.