Saya meminta jQuery mengambil beberapa konten textarea dan memasukkannya ke dalam li.
Saya ingin secara visual mempertahankan jeda baris.
Pasti ada cara yang sangat sederhana untuk melakukan ini ...
javascript
jquery
line-breaks
gbhall
sumber
sumber
Jawaban:
sumber
Anda cukup melakukan:
sumber
Letakkan ini di kode Anda (sebaiknya di pustaka fungsi js umum):
Pemakaian:
membuat fungsi prototipe string memungkinkan Anda menggunakan ini pada string apa pun.
sumber
Dengan semangat mengubah rendering daripada mengubah konten , CSS berikut membuat setiap baris baru berperilaku seperti
<br>
:Mengapa dua aturan:
pre-line
hanya memengaruhi baris baru (terima kasih atas petunjuknya, @KevinPauli). IE6-7 dan browser lama lainnya kembali ke yang lebih ekstrimpre
yang juga menyertakannowrap
dan membuat banyak spasi. Detail tentang ini dan pengaturan lainnya (pre-wrap
) di mozilla dan css-trick (terima kasih @Sablefoste).Meskipun saya umumnya tidak menyukai kecenderungan SO untuk menebak-nebak pertanyaan daripada menjawabnya, dalam hal ini mengganti baris baru dengan
<br>
markup dapat meningkatkan kerentanan terhadap serangan injeksi dengan input pengguna yang tidak dicuci. Anda melewati garis merah terang setiap kali Anda mengubah.text()
panggilan.html()
yang menurut pertanyaan literal harus diselesaikan. (Terima kasih @AlexS untuk menyoroti poin ini.) Meskipun Anda mengesampingkan risiko keamanan pada saat itu, perubahan di masa mendatang dapat tanpa disadari. Sebaliknya, CSS ini memungkinkan Anda untuk mendapatkan jeda baris tanpa markup menggunakan yang lebih aman.text()
.sumber
white-space:
opsi lainnya , sepertipre-wrap
. Lihat css-tricks.com/almanac/properties/w/whitespace.html()
untuk mengatur konten, yang pada gilirannya akan memungkinkan pengguna untuk memasukkan HTML sewenang-wenang kecuali Anda memfilternya terlebih dahulu..html()
bahaya @AlexS, coba masukkan.Larutan
Gunakan kode ini
sumber
Fungsi JavaScript ini mempertimbangkan apakah akan menggunakan insert atau replace untuk menangani swap.
(Sisipkan atau ganti jeda baris HTML)
Demo - JSFiddle
sumber
Saya menulis sedikit ekstensi jQuery untuk ini:
sumber
untuk memperbaiki jawaban yang diterima @Luca Filosofi,
jika diperlukan, mengubah klausa awal regex ini menjadi
/([^>[\s]?\r\n]?)
juga akan memasukkan kasus di mana baris baru muncul setelah tag DAN beberapa spasi, bukan hanya tag yang langsung diikuti oleh baris barusumber
Cara lain untuk menyisipkan teks dari textarea di DOM dengan mempertahankan jeda baris adalah dengan menggunakan properti Node.innerText yang merepresentasikan konten teks yang dirender dari sebuah node dan turunannya.
Sebagai pengambil, itu mendekati teks yang akan didapat pengguna jika mereka menyorot konten elemen dengan kursor dan kemudian disalin ke clipboard.
Properti ini menjadi standar pada tahun 2016 dan didukung dengan baik oleh browser modern. Dapatkah Saya Menggunakan : 97% cakupan global ketika saya memposting jawaban ini.
sumber