Я пытаюсь разобрать текст в элементе управления textarea и в то же время заменить все
обычными символами разрыва строки.

Мне удалось сделать это в Windows, заменив
на CR (как ни странно, это не сработало с CRLF, это дало мне разрыв строки + пустое пространство), но я боюсь, что этот код не будет работать в Unix / Mac, потому что они используют LF для переноса строки.

Есть ли способ использовать системный символ разрыва строки по умолчанию в javascript? Что-то похожее на Environment.NewLine в .Net

(Мне не удалось написать обратную косую черту в этом редакторе, но я использую \r для CR и \n для LF)

Изменить: я должен, вероятно, упомянуть, что все работает с FF, это, как всегда, Internet Explorer (8), с которым у меня проблемы.

Edit2 :

Я могу воспроизвести свою проблему с помощью этого кода. Когда я запускаю его в IE8, я получаю «row1 row2», но когда я запускаю его в FF, я получаю реальные разрывы строк:


<html>
<head>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.js"></script>
    <script type="text/javascript">

    function fill() {
        var text = "row1<br /><br />row2";

        $('#fill_me').text(text.replace(/<br \/>/g, '\n'));
    }

    </script>

</head>

<body onload="fill()">
    <textarea rows=10 cols=100 id="fill_me"></textarea>
</body>
</html>

1
Irro 11 Июн 2010 в 22:49

2 ответа

Лучший ответ

Ваша проблема не в символе новой строки, а в использовании вами функций jQuery.

Вам следует использовать .val() вместо .text() для изменения value элемента <textarea>. .text() предназначен для изменения textContent узлов (например, <div> и т. Д.). Символы новой строки внутри text(), скорее всего, будут преобразованы в простые пробелы ...

Продемонстрировано на jsfiddle

1
gnarf 11 Июн 2010 в 21:26

Вы всегда можете использовать \n в качестве символа разрыва строки в Javascript.

Например, заявление,

document.getElementById('mytextarea').value = "This is some text.\n\nAnd here is some more.";

Добавляет два возврата между «Это какой-то текст». и «И вот еще немного». в IE, Firefox, Chrome, Safari и т. д.

1
Robusto 11 Июн 2010 в 19:00