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?

diskky
sumber

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.

Bakudan
sumber
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;
};
Daniel Flippance
sumber
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>

Trott
sumber
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.
Pak Tua
sumber
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;
Suraj Kumar Maurya
sumber
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;")));
Garam Hareket
sumber
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>

Jukka K. Korpela
sumber
5

Anda mungkin ingin menggunakannya \nsebagai gantinya /n.

Zar
sumber
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);
}
Harry Sarshogh
sumber
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"
Brunno Vodola Martins
sumber
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>
Naresh kumar
sumber
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

Lechani Houssam
sumber