Saya telah mencoba beberapa pendekatan tetapi tidak ada yang berhasil. Adakah yang tahu trik bagus untuk menyiasati ini?
<textarea placeholder='This is a line \n this should be a new line'></textarea>
<textarea placeholder='This is a line
should this be a new line?'></textarea> <!-- this works in chrome apparently -->
PEMBARUAN: Tidak berfungsi di chrome. Itu hanya lebar teks.
Lihat: http://jsfiddle.net/pdXRx/
<?="\n"?>
sebagai baris baru
atribut placeholder, seperti<textarea placeholder="This is a line This is another one"></textarea>
. Jawabannya ada di bawah.Jawaban:
Apa yang bisa Anda lakukan adalah menambahkan teks sebagai
value
, yang menghormati jeda baris\n
.Kemudian Anda bisa menghapusnya
focus
dan menerapkannya kembali (jika kosong) aktifblur
. Sesuatu seperti iniContoh: http://jsfiddle.net/airandfingers/pdXRx/247/
Bukan CSS murni dan tidak bersih tetapi melakukan trik.
sumber
if($(this).val() == 'This is...')
kefocus
handler, jika tidak jika Anda menambahkan beberapa teks, kemudian kehilangan fokus, lalu klik pada textarea lagi, teks Anda menghilang.Anda bisa menyisipkan entitas html baris baru
di dalam atribut placeholder:<textarea name="foo" placeholder="hello you Second line Third line"></textarea>
Bekerja pada: Chrome 62, IE10, Firefox 60
Tidak berfungsi: Safari 11
https://jsfiddle.net/lu1s/bxkjLpag/2/
sumber
secara harfiah, tanpa menghasilkan karakter spasi. Lihat developer.mozilla.org/en/HTML/HTML5/…Jangan berpikir Anda diizinkan melakukan itu: http://www.w3.org/TR/html5/forms.html#the-placeholder-attribute
Konten yang relevan (penekanan saya):
sumber
UPDATE (Jan 2016): Retas kecil yang bagus mungkin tidak berfungsi di semua browser lagi jadi saya punya solusi baru dengan sedikit javascript di bawah ini.
A Little Hack Bagus
Rasanya tidak enak, tetapi Anda bisa meletakkan baris baru di html. Seperti ini:
Perhatikan setiap baris pada baris baru (tidak sedang dibungkus) dan setiap indentasi 'tab' adalah 4 spasi. Memang itu bukan metode yang sangat bagus, tetapi tampaknya berhasil:
http://jsfiddle.net/01taylop/HDfju/
resize: none;
di css sehingga ukuran textarea tetap (Lihat jsfiddle).Atau Ketika Anda menginginkan baris baru, tekan return dua kali (Jadi ada baris kosong di antara 'baris baru' Anda. 'Baris kosong' ini dibuat perlu memiliki cukup tab / spasi yang akan menyamakan dengan lebar teks Anda. Tampaknya menjadi masalah jika Anda memiliki terlalu banyak, Anda hanya perlu cukup. Ini sangat kotor dan mungkin tidak sesuai dengan browser. Saya berharap ada cara yang lebih mudah!
Solusi yang Lebih Baik
Lihatlah JSFiddle .
box-sizing
dandisplay: block
pada textarea penting atau div di belakangnya tidak akan sama ukurannya.resize: vertical
dan amin-height
pada textarea juga penting - perhatikan bagaimana teks placeholder akan membungkus dan memperluas textarea akan menjaga latar belakang putih. Namun, mengomentariresize
properti akan menyebabkan masalah saat memperluas area teks secara horizontal.HTML:
SCSS:
Javascript:
sumber
Bagaimana dengan solusi CSS: http://cssdeck.com/labs/07fwgrso
sumber
Salaamun Alekum
Bekerja Untuk Google Chrome
Terima kasih
sumber
Tambahkan saja & # 10 untuk garis putus-putus, tidak perlu menulis CSS atau javascript apa pun.
sumber
Jawaban lama:
Tidak, Anda tidak bisa melakukan itu di atribut placeholder. Anda bahkan tidak dapat menyalin html baris baru seperti
di placeholder.Jawaban baru:
Browser modern memberi Anda beberapa cara untuk melakukan ini. Lihat JSFiddle ini:
http://jsfiddle.net/pdXRx/5/
sumber
Penggunaan
di tempat\n
ini akan mengubah garis.sumber
\n
?Coba ini:
http://jsfiddle.net/vr79B/
sumber
Anda tidak dapat melakukannya dengan HTML murni, tetapi plugin jQuery ini memungkinkan Anda: https://github.com/bradjasper/jQuery-Placeholder-Newlines
sumber
$('input, textarea').placeholder();
dengan ini$('input[placeholder], textarea[placeholder]').placeholder();
Versi yang sedikit lebih baik dari jawaban Jason Gennaro (lihat komentar kode):
sumber
Saya menyukai karya Jason Gennaro dan Denis Golomazov, tetapi saya menginginkan sesuatu yang akan lebih bermanfaat secara global. Saya telah memodifikasi konsep tersebut sehingga dapat ditambahkan ke halaman mana pun tanpa dampak.
http://jsfiddle.net/pdXRx/297/
Javascript sangat sederhana
sumber
HTML
JS
sumber
Textarea menghormati atribut spasi putih untuk placeholder. https://www.w3schools.com/cssref/pr_text_white-space.asp
Pengaturan untuk pre-line memecahkan masalah bagi saya.
sumber
Saya memodifikasi biola @ Richard Bronosky seperti ini .
Lebih baik pendekatan untuk menggunakan
data-*
atribut daripada atribut khusus. Aku diganti<textarea placeholdernl>
untuk<textarea data-placeholder>
dan beberapa gaya lain juga.Diedit
Berikut adalah jawaban asli Richard yang berisi cuplikan kode lengkap.
sumber
sangat sederhana
nilai mewakili string asli
sumber
Lihatlah solusi ini dengan placeholder ubahsuaian.
Demo tentang biola .
sumber
Saya tidak suka menyembunyikan placeholder ketika Anda memfokuskan textarea. Jadi saya membuat fungsi konstruktor
Placeholder
yang terlihat persis seperti placeholder bawaan dan berfungsi juga di peramban lain selain Google Chrome. Ini sangat nyaman karena Anda dapat menggunakanPlaceholder
fungsi sesering yang Anda inginkan dan bahkan tidak perlu jQuery.EDIT:
Sekarang juga menangani kasus khusus, seperti memasukkan placeholder, dengan benar.
sumber
Masalah ini dapat diatasi dengan menggunakan pemilih placeholder yang ditunjukkan dan latar belakang yang diberlakukan super, jika implementasi Anda memungkinkan:
https://codepen.io/franciscoaquino/pen/YzyBPYK
Dukungan pemilih:
https://caniuse.com/#feat=css-placeholder-shown
sumber