Baris baru di area teks


281
<textarea cols='60' rows='8'>This is my statement one.\n This is my statement2</textarea>

<textarea cols='60' rows='8'>This is my statement one.<br/> This is my statement2</textarea>

Saya mencoba keduanya tetapi baris baru tidak mencerminkan saat merender file html. Bagaimana saya bisa melakukan itu?

Jawaban:


524

Coba yang ini:

    <textarea cols='60' rows='8'>This is my statement one.&#13;&#10;This is my statement2</textarea>

&#10;Umpan Baris dan &#13;Pengembalian Carriage adalah entitas HTML wikipedia . Dengan cara ini Anda benar-benar menguraikan baris baru ("\ n") daripada menampilkannya sebagai teks.


2
@LittleAlien jsfiddle.net/v0y3xvpx/1 - jawaban berdasarkan pertanyaan OP, jelas masalah telah dipecahkan
Bakudan

2
tidak hanya &#10;cukup untuk menguraikan \n?
Doug

Tidakkah itu tergantung pada Windows vs macOS apakah diperlukan karakter baris-feed dan carriage-return, atau bahkan diuraikan?
SeizeTheDay

1
@SeizeTheDay ya, tapi itu bukan MacOS - itu Linux / BSD vs Windows
Bakudan

@ Bakudan Oh! Saya pikir macOS, karena berbasis Unix, masih akan memiliki masalah itu. Tapi Anda pasti benar, perbedaannya lebih umum.
SeizeTheDay

28

Saya merasa String.fromCharCode(13, 10)terbantu ketika menggunakan view engine. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/fromCharCode

Ini menciptakan string dengan karakter baris baru yang sebenarnya di dalamnya dan karenanya memaksa mesin tampilan untuk menampilkan baris baru daripada versi yang lolos. Misalnya: Menggunakan mesin tampilan NodeJS EJS - Ini adalah contoh sederhana di mana \ n harus diganti:

viewHelper.js

exports.replaceNewline = function(input) {
    var newline = String.fromCharCode(13, 10);
    return input.replaceAll('\\n', newline);
}

EJS

<textarea><%- viewHelper.replaceNewline("Blah\nblah\nblah") %></textarea>

Render

<textarea>Blah
blah
blah</textarea>

menggantikan semua:

String.prototype.replaceAll = function (find, replace) {
    var result = this;
    do {
        var split = result.split(find);
        result = split.join(replace);
    } while (split.length > 1);
    return result;
};

1
Newline = String.fromCharCode (13, 10); adalah satu-satunya hal yang berhasil bagi saya dalam menambahkan baris baru secara terprogram selama waktu berjalan Beri +1 pada itu.
Ronen Rabinovici

3
Saya ingin menyarankan mungkin cara yang lebih sederhana untuk mengganti semua: var regExp = new RegExp (find, "gi"); str = str.replace (regExp, ganti);
Ronen Rabinovici

2
Saya lakukan s = s.replace(/\\n/g, String.fromCharCode(13, 10) ). Ini sihir. Terima kasih.
Glycerine

28
<textarea cols='60' rows='8'>This is my statement one.

This is my statement2</textarea>

Fiddle menunjukkan bahwa ia berfungsi: http://jsfiddle.net/trott/5vu28/ .

Jika Anda benar-benar ingin ini berada pada satu baris dalam file sumber, Anda bisa memasukkan referensi karakter HTML untuk umpan baris dan carriage return seperti yang ditunjukkan dalam jawaban dari @Bakudan:

  <textarea cols='60' rows='8'>This is my statement one.&#13;&#10;This is my statement2</textarea>


22

Saya pikir Anda mengacaukan sintaks berbagai bahasa.

  • &#10;adalah (nilai HtmlEncoded ASCII 10 atau) literal karakter linefeed dalam string HTML . Tetapi karakter umpan baris TIDAK me-render sebagai baris istirahat dalam HTML (lihat catatan di bawah).

  • \nadalah karakter karakter linefeed (ASCII 10) dalam string Javascript .

  • <br/>adalah pemisah garis dalam HTML. Banyak elemen lain, misalnya <p>,, <div>dll juga membuat jeda baris kecuali diganti dengan beberapa gaya.

Semoga ilustrasi berikut ini akan membuatnya lebih jelas:

T.innerText = "Position of LF: " + t.value.indexOf("\n");

p1.innerHTML = t.value;
p2.innerHTML = t.value.replace("\n", "<br/>");
p3.innerText = t.value.replace("\n", "<br/>");
<textarea id="t">Line 1&#10;Line 2</textarea>

<p id='T'></p>
<p id='p1'></p>
<p id='p2'></p>
<p id='p3'></p>

Beberapa hal yang perlu diperhatikan tentang Html:

  • The innerHTMLnilai dari TEXTAREAelemen tidak membuat Html. Coba yang berikut ini: <textarea>A <a href='x'>link</a>.</textarea>untuk melihat.
  • The Pelemen merender semua ruang putih bersebelahan (termasuk garis baru) sebagai salah satu ruang.
  • Karakter LF tidak membuat baris baru atau baris baru dalam HTML.
  • The TEXTAREAmerender LF sebagai baris baru dalam kotak area teks.

1
Di muka itu posting ini tampaknya rumit, tetapi sebenarnya mengandung BANYAK informasi yang berguna. Jika Anda menambahkan garis secara progamatic ke <textarea/>ini, ini adalah pos yang Anda butuhkan!
Morvael

<br/>adalah apa yang saya cari
Johnny Five

14

Istirahatkan masukkan kata kunci baris di Textarea menggunakan CSS:

white-space: pre-wrap;

1
Ini harus lebih tinggi
Rodney Salcedo

itu adalah metode paling sederhana untuk mencapai hasil yang diperlukan, terima kasih @ Suraj
Moaz Ateeq

Ini jawabannya
anvd

7

coba ini .. ini berhasil:

<textarea id="test" cols='60' rows='8'>This is my statement one.&#10;This is my statement2</textarea>

mengganti
tag:

$("textarea#test").val(replace($("textarea#test").val(), "<br>", "&#10;")));

3
sebenarnya $ ("textarea # test"). val (). ganti (/ \ n / g, "& # 10;"); (ini akan menggantikan semua kemunculan baris baru)
Claudiu

7

Untuk mendapatkan baris baru di dalam area teks, masukkan baris-break aktual di sana:

    <textarea cols='60' rows='8'>This is my statement one.
    This is my statement2</textarea>


5

Anda mungkin ingin menggunakannya \nsebagai gantinya /n.


5
Yah, literal \njuga tidak akan berfungsi, itu harus menjadi baris baru yang sebenarnya .
Greg Hewgill

Ya tentu saja. Tapi aku (salah?) Berasumsi bahwa dia sudah tahu ini.
Zar

2

Setelah banyak tes, kode berikut berfungsi untuk saya di Typescreipt

 export function ReplaceNewline(input: string) {
    var newline = String.fromCharCode(13, 10);
    return ReplaceAll(input, "<br>", newline.toString());
}
export function ReplaceAll(str, find, replace) {
    return str.replace(new RegExp(find, 'g'), replace);
}

0

.replace()Fungsi saya menggunakan pola yang dijelaskan pada jawaban lain tidak berfungsi. Pola yang berhasil untuk kasus saya adalah:

var str = "Test\n\n\Test\n\Test";
str.replace(/\r\n|\r|\n/g,'&#13;&#10;');

// str: "Test&#13;&#10;&#13;&#10;Test&#13;&#10;Test"

0

T.innerText = "Posisi LF:" + t.value.indexOf ("\ n");

p3.innerText = t.value.replace("\n", "");

<textarea id="t">Line 1&#10;Line 2</textarea>

<p id='p3'></p>

Sementara kode ini dapat menjawab pertanyaan, memberikan konteks tambahan tentang mengapa dan / atau bagaimana kode ini menjawab pertanyaan meningkatkan nilai jangka panjangnya.
Alex Riabov

-5

cukup gunakan <br>
ex:

<textarea>
blablablabla <br> kakakakakak <br> fafafafafaf 
</textarea>

mengakibatkan:
blablablabla
kakakakakak
fafafafafaf

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.