Saya melakukan aplikasi peta telepon. Ketika saya mencoba type="date"
bidang input seperti yang ditunjukkan di bawah ini, ini menunjukkan pemilih tanggal di iPhone seperti yang saya harapkan tetapi tidak menunjukkan placeholder yang telah saya berikan. Saya menemukan masalah yang sama di sini di SO, tetapi tidak ada solusi di mana pun.
<input placeholder="Date" class="textbox-n" type="date" id="date">
html
cordova
datepicker
placeholder
Wakil Presiden Mumthezir
sumber
sumber
Jawaban:
Ini mungkin tidak sesuai ... tapi membantu saya.
sumber
Jika Anda menggunakan metode mvp tetapi menambahkan acara onblur untuk mengubahnya kembali ke bidang teks sehingga teks placeholder muncul lagi saat bidang masukan kehilangan fokus. Itu hanya membuat peretasan sedikit lebih baik.
Semoga ini membantu.
sumber
Saya akhirnya menggunakan yang berikut ini.
Mengenai komentar Firefox : Umumnya, Firefox tidak akan menampilkan placeholder teks apa pun untuk tanggal jenis masukan. Tetapi karena ini adalah pertanyaan Cordova / PhoneGap, ini seharusnya tidak menjadi masalah (Kecuali Anda ingin mengembangkan melawan FirefoxOS).
sumber
<input type="date" placeholder="MY PLACEHOLDER" onchange="this.classList.toggle('has-value',this.value);">
input[type="date"]:not(:focus):not(.has-value):before
untuk menunjukkan format saat input difokuskan (untuk orang yang mengetik tanggal alih-alih memilih)Saya menggunakan ini di css saya:
dan memasukkan sesuatu seperti ini ke dalam javascript:
ini berfungsi untuk saya untuk perangkat seluler (Ios8 dan android). Tapi saya menggunakan jquery inputmask untuk desktop dengan tipe teks input. Solusi ini adalah cara yang bagus jika kode Anda berjalan di ie8.
sumber
color: #aaa
untuk tampilan seperti placeholder di iOS.color: lightgray
terlalu ringan.$("#myel").on( "input" , function(){ $(this).toggleClass( "full" , $(this).val().length > 0 ); });
Sampai hari ini (2016), saya telah berhasil menggunakan 2 potongan tersebut (ditambah mereka bekerja dengan baik dengan Bootstrap4).
Masukkan data di sebelah kiri, placeholder di sebelah kiri
Placeholder menghilang saat mengklik
sumber
Menurut standar HTML :
sumber
Ini bekerja untuk saya:
sumber
:after
elemen semu menghilang saat tanggal dipilih. Jadi tidak perlu menghapus placeholderonfocus="(this.placeholder='')"
untuk menghapus placeholder setelah tanggal dipilih.Saya menggunakan sedikit pun jQuery ini: http://jsfiddle.net/daviderussoabram/65w1qhLz/
sumber
Berdasarkan jawaban deadproxor dan Alessio, saya hanya akan mencoba menggunakan CSS:
Dan jika Anda perlu membuat placeholder tidak terlihat setelah menulis sesuatu di masukan, kita dapat mencoba menggunakan pemilih: valid dan: tidak valid, jika masukan Anda diperlukan.
EDIT
Berikut kode jika Anda menggunakan diperlukan dalam masukan Anda:
sumber
Temukan cara yang lebih baik untuk menyelesaikan masalah Anda. Saya pikir ini akan membantu Anda. saat difokuskan, kotak akan berubah tipe menjadi teks sehingga akan menampilkan placeholder Anda. ketika difokuskan, jenisnya berubah menjadi tanggal sehingga tampilan kalender akan ditampilkan.
sumber
Saya mengambil ide jbarlow, tetapi saya menambahkan jika dalam fungsi onblur sehingga bidang hanya mengubah jenisnya jika nilainya kosong
sumber
Menekankan masalah dalam jawaban yang benar saat ini "mengklik bidang akan menampilkan keyboard di layar, bukan pemilih data":
Masalah ini disebabkan oleh Browser yang berperilaku sesuai dengan jenis input saat mengklik (= teks). Oleh karena itu, penting untuk berhenti memfokuskan pada elemen input (blur) dan kemudian memulai kembali fokus secara terprogram pada elemen input yang didefinisikan sebagai type = date oleh JS pada langkah pertama. Keyboard ditampilkan dalam mode nomor telepon.
sumber
coba solusi saya. Saya menggunakan atribut 'diperlukan' untuk mengetahui apakah input sudah diisi dan jika tidak, saya menampilkan teks dari atribut 'placeholder'
sumber
Butuh waktu beberapa saat untuk memikirkan yang satu ini, biarkan saja
type="text"
, dan tambahkanonfocus="(this.type='date')"
, seperti yang ditunjukkan di atas.Saya bahkan menyukai ide onBlur yang disebutkan di atas
<input placeholder="Date" class="textbox-n" type="text" onfocus="(this.type='date')" onblur="(this.type='text')" id="date">
Semoga ini bisa membantu siapa pun yang tidak cukup memahami apa yang terjadi di atas
sumber
Untuk meringkas masalah input tanggal:
Solusi yang saya temukan untuk memenuhi persyaratan tersebut adalah dengan menggunakan trik biasa untuk memberi gaya pada elemen bentuk asli: pastikan elemen ditampilkan tetapi tidak terlihat, dan tampilkan gaya yang diharapkan melalui label yang terkait . Biasanya, label akan ditampilkan sebagai input (termasuk placeholder), tetapi di atasnya.
Jadi, HTML seperti:
Bisa ditata sebagai:
Setiap peristiwa (klik, fokus) pada label terkait seperti itu akan tercermin di bidang itu sendiri, dan memicu UI masukan tanggal.
Jika Anda ingin menguji solusi seperti itu secara langsung, Anda dapat menjalankan versi Angular ini dari tablet atau ponsel Anda.
sumber
JADI apa yang akhirnya saya putuskan untuk dilakukan ada di sini dan berfungsi dengan baik di semua browser seluler termasuk iPhone dan Android.
Tanggal
sumber
Saya bekerja dengan kerangka ionik dan solusi yang disediakan oleh @Mumthezir hampir sempurna. Jika seseorang memiliki masalah yang sama dengan saya (setelah perubahan, input masih fokus dan ketika menggulir, nilai menghilang begitu saja) Jadi saya menambahkan onchange untuk membuat input.blur ()
sumber
Kamu bisa
seperti ini...
sumber
Temukan cara yang lebih baik untuk menangani pemahaman dasar pengguna dengan gerakan mouse dan membuka datepicker dengan mengklik:
<input type="text" onfocus="(this.type='date')" onmouseover="(this.type = 'date')" onblur="(this.value ? this.type = 'date' : this.type = 'text')" id="date_start" placeholder="Date">
Sembunyikan juga panah webkit dan buat lebar 100% untuk menutupi klik:
sumber
Dari sudut pandang sudut saya berhasil menempatkan placeholder di elemen tanggal tipe masukan.
Pertama-tama saya mendefinisikan css berikut:
Alasan mengapa ini diperlukan adalah jika konten css3 memiliki warna yang berbeda dari placeholder normal, jadi saya harus menggunakan yang umum.
Kemudian pada template digunakan atribut viewchild birthDate, untuk dapat mengakses input ini dari komponen. Dan mendefinisikan ekspresi sudut pada atribut placeholder, yang akan memutuskan apakah kita menampilkan placeholder atau tidak. Ini adalah kelemahan utama dari solusinya, yaitu Anda harus mengelola visibilitas placeholder.
sumber
Kode mumthezir yang direvisi
sumber
Saya terkejut hanya ada satu jawaban dengan pendekatan yang mirip dengan yang saya gunakan.
Saya mendapat inspirasi dari komentar @Dtipson di jawaban VP @Mumthezir.
Saya menggunakan dua input untuk ini, satu adalah input palsu yang saya gunakan untuk
type="text"
mengatur placeholder, yang lainnya adalah bidang nyatatype="date"
.Pada
mouseenter
acara di wadah mereka, saya menyembunyikan masukan palsu dan menunjukkan yang asli, dan saya melakukan yang sebaliknya padamouseleave
acara tersebut. Jelas, saya membiarkan input nyata terlihat jika memiliki nilai yang ditetapkan di atasnya.Saya menulis kode untuk menggunakan Javascript murni tetapi jika Anda menggunakan jQuery (saya lakukan), sangat mudah untuk "mengubahnya".
Saya menguji ini juga pada ponsel Android dan berhasil, ketika pengguna mengetuk bidang pembuat data ditampilkan. Satu-satunya hal adalah, jika input sebenarnya tidak memiliki nilai dan pengguna menutup datepicker tanpa memilih tanggal, input akan tetap terlihat sampai mereka mengetuk di luarnya. Tidak ada acara untuk didengarkan untuk mengetahui kapan datepicker ditutup jadi saya tidak tahu bagaimana menyelesaikannya.
Saya tidak memiliki perangkat iOS untuk mengujinya.
sumber
Memperluas solusi @ mvp dengan javascript yang tidak mengganggu, berikut pendekatannya:
HTML:
Javascript:
sumber
Saya pikir yang harus Anda lakukan adalah mengubah model untuk mengatakan bidang tanggal nullable dan kemudian meletakkan [Wajib] di atasnya jika diperlukan. Jika Anda melakukan ini, teks placeholder tidak muncul.
sumber
Hei, jadi saya mengalami masalah yang sama tadi malam dan menemukan kombinasi dari semua jawaban Anda dan beberapa keajaiban yang berkilauan melakukan pekerjaan dengan baik:
HTML:
CSS:
JQuery:
Penjelasan: Jadi, apa yang terjadi di sini, pertama-tama di HTML , ini cukup sederhana hanya dengan melakukan input-tanggal-HMTL5 dasar dan menetapkan placeholder. Pemberhentian selanjutnya: CSS , kami menyetel: before-pseudo-element untuk memalsukan placeholder kami, ini hanya mengambil atribut placeholder dari input itu sendiri. Saya membuat ini hanya tersedia dari lebar viewport 1024px - mengapa saya akan memberi tahu nanti. Dan sekarang jQuery , setelah refactoring beberapa kali saya menemukan sedikit kode ini yang akan memeriksa setiap perubahan apakah ada nilai yang ditetapkan atau tidak, jika tidak maka akan (kembali) menambahkan kelas, sebaliknya .
TAHU ISU:
semoga membantu! cheerio!
sumber
Jika Anda hanya peduli dengan seluler:
sumber
HTML:
JavaScript:
sumber
Berikut adalah kemungkinan peretasan lain yang tidak menggunakan js dan masih menggunakan css
content
. Perhatikan bahwa karena:after
tidak didukung pada beberapa browser untuk input, kita perlu memilih input dengan cara lain, sama untukcontent attr('')
sumber
Ini berfungsi untuk saya menggunakan ini sebagai elemen input:
CSS ini menunjukkan placeholder permanen. Nilai yang dipilih ditampilkan setelah placeholder.
Saya menggunakan solusi ini untuk formulir Wordpress dengan plugin contact-form-7.
sumber
Tidak ada solusi yang berfungsi dengan benar untuk saya di Chrome di iOS 12 dan sebagian besar tidak disesuaikan untuk mengatasi kemungkinan input beberapa tanggal pada halaman. Saya melakukan hal berikut, yang pada dasarnya membuat label palsu di atas input tanggal dan menghapusnya di ketuk. Saya juga menghapus label palsu jika lebar viewport melebihi 992px.
JS:
CSS:
sumber