Как сохранить новую строку html в текстовой области

#javascript #jquery

#javascript #jquery

Вопрос:

Я читаю содержимое столбца, используя

 $("#myText").text($.trim($(this).closest('tr').next('tr').find('.mytext).text()));
  

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

если мой текст

 Line 1

Line 2

Line 3 
  

он отображается как

 Line1Line2Line3
  

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

1. Да ладно, это было бы легко сделать jsfiddle. Вам действительно нужно использовать это при задании вопроса. Мы не можем точно решить вашу проблему, поскольку не видим ее и не можем протестировать другие методы. Поэтому, поскольку вы не использовали пример, все ответы будут в лучшем случае догадками, поскольку мы не можем их проверить без jsfiddle.

2. Да, скрипку js приятно иметь, но я думаю, что это четко определенный вопрос, и поэтому скрипка не совсем необходима.

3. Было бы намного проще ответить, если бы он сделал скрипку. Это заняло бы у него около двух минут, и это сделало бы мою работу в качестве ответчика намного проще, поскольку у меня был способ протестировать мое решение, используя его конкретный исходный код.

4. скрипты хороши, но не должны быть обязательными, поскольку, если бы это была просто скрипка без кода в вопросе, были бы люди, жалующиеся на то, что им пришлось перейти по внешней ссылке, чтобы ответить на вопрос, а также на то, что внешние ссылки могут изменить вопрос, делая его бесполезным и т. Д

5. @martincarlin87, публиковать скрипку не обязательно, но в этом случае было бы полезно посмотреть, какой текст он выбирает (откуда он берется, как он отформатирован) и попробовать различные возможные решения. Также указать и / или объяснить любые ошибки реализации или синтаксиса. В идеале в вопросе должна быть демонстрация скрипки и репрезентативный код: нет взаимоисключающего правила, скрипки или кода … мы действительно можем и надеемся иметь оба.

Ответ №1:

Вероятно, вы вводите текст в ячейку таблицы, содержимое которой у вас есть, например:

 Line 1<br/>
Line 2<br/>
Line 3<br/>
  

Или в отдельных подразделениях, или каким-либо другим способом разбить его на отдельные строки.
Но textarea не обрабатывает все теги html, он отображает только обычный текст. А для разделения строки он использует nr whitch, что означает новую полосу и возврат каретки.

Попробуйте заменить <br /> на nr . Но это поможет, только если ваши строки в столбце разделены на <br /> .

Ответ №2:

Ваш код выглядит так Line 1<br/>Line 2<br/>Line 3<br/> ? Если вы можете отформатировать html, попробуйте отформатировать его следующим образом:

 Line 1<br/>
Line 2<br/>
Line 3<br/>
  

Если вы не можете отформатировать html, вам нужно использовать html метод, а если #myText это textarea, то вы должны использовать val метод для установки его значения.

Если вы не можете отформатировать html, ваш код должен выглядеть так, чтобы работать:

 $("#myText").val(
    $.trim(
        $(this).closest('tr').next('tr')
            .find('.mytext').html().replace('<br/>', '/r/n')
    )
);
  

с заменой части немного богаче, чтобы рассмотреть более общий случай.

Ответ №3:

Используйте

 $("#myText").html($.trim($(this).closest('tr').next('tr').find('.mytext').text()));
  

Вы использовали .text, который записывает только то, что он говорит: «текст». Для сохранения форматирования необходимо использовать .html.

Ответ №4:

Похоже, проблема может быть связана с вашей функцией trim. Вы обрезаете все новые строки. Чтобы иметь возможность обрезать ее и иметь новую строку в конце, вы можете вручную поместить эту новую строку туда:

 $("#myText").text($.trim($(this).closest('tr').next('tr').find('.mytext').text())   "rn");
  

И после рассмотрения этого в течение нескольких минут, я должен согласиться, что это было бы проще устранить с помощью jsfiddle. Не совсем ясно, что именно происходит. Мы должны сделать много предположений о том, как вы используете этот код. Например, мы предполагаем, что

 Line 1
Line 2
  

на самом деле

 Line 1<br>
Line 2<br>
  

что на самом деле должно работать так, как вы ожидаете.