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.