Apakah ada cara untuk memaksa keyboard nomor muncul di telepon untuk <input type="text">
? Saya baru menyadari bahwa <input type="number">
dalam HTML5 adalah untuk "angka floating-point", jadi tidak cocok untuk nomor kartu kredit, kode ZIP, dll.
Saya ingin meniru fungsi keyboard numerik dari <input type="number">
, untuk input yang mengambil nilai numerik selain angka floating-point. Apakah ada, mungkin, input
jenis lain yang sesuai yang melakukan itu?
Jawaban:
Anda bisa melakukannya
<input type="text" pattern="\d*">
. Ini akan menyebabkan keyboard angka muncul.Lihat di sini untuk detail lebih lanjut: Panduan Pemrograman Teks, Web, dan Pengeditan untuk iOS
sumber
\d*
itu tidak berfungsi dan[0-9]
diperlukan. Perhatikan bahwa ini akan berhasiltype='numeric'
. Ini disarankan berdasarkan referensi dokumen tertaut untuk kode pos.Pada pertengahan 2015, saya percaya ini adalah solusi terbaik:
Ini akan memberi Anda tombol angka di Android dan iOS:
Ini juga memberi Anda perilaku desktop yang diharapkan dengan tombol panah atas / bawah dan penambahan tombol panah naik / turun ramah keyboard:
Cobalah dalam cuplikan kode ini:
Dengan menggabungkan keduanya
type="number"
danpattern="[0-9]*
, kami mendapatkan solusi yang berfungsi di mana-mana. Dan, forward-nya kompatibel denganinputmode
atribut HTML 5.1 yang diusulkan di masa depan .Catatan: Menggunakan pola akan memicu validasi formulir asli browser. Anda dapat menonaktifkan ini menggunakan
novalidate
atribut, atau Anda dapat menyesuaikan pesan kesalahan untuk validasi yang gagal menggunakantitle
atribut.Jika Anda harus dapat memasukkan nol, koma, atau huruf terkemuka - misalnya, kode pos internasional - lihat varian kecil ini .
Kredit dan bacaan lebih lanjut:
http://www.smashingmagazine.com/2015/05/form-inputs-browser-support-issue/ http://danielfriesen.name/blog/2013/09/19/input-type-number-and-ios- tombol angka/
sumber
type="number"
spesifikasi mengatakan Atribut konten berikut tidak harus ditentukan dan tidak berlaku untuk elemen: ... inputmode<input type="text" inputmode="numeric">
dan ia ingin melihat peramban selulerinputmode
untuk menentukan apakah itu memperlihatkan papan ketik atau papan ketik penuh. Karena tidak ada browser yang mendukunginputmode
, saya tidak yakin bagaimana ini akan diterapkan pada browser desktop vs mobile. Mis: Apakah browser desktop mengizinkan pengetikan huruf<input type="text" inputmode="numeric">
? Jika demikian, itu masalah.<input type="number">
mencegah ini, hanya memperbolehkan angka. Mungkin kita harus menunggu sampai browser mulai mengimplementasikannya dan kemudian kita dapat memperbarui jawaban ini.type="number"
itu layak , tetapi mungkin menampilkan pemintal yang tidak masuk akal untuk misalnya nomor kartu kredit.This attribute applies when the value of the type attribute is text, search, tel, url, email, or password, otherwise it is ignored.
Saya telah menemukan bahwa, setidaknya untuk bidang-bidang "passcode", melakukan sesuatu seperti pada
<input type="tel" />
akhirnya menghasilkan bidang yang berorientasi nomor paling otentik dan juga memiliki manfaat tanpa autoformatting . Misalnya, dalam aplikasi seluler yang saya kembangkan untuk Hilton baru-baru ini, saya akhirnya menggunakan ini:... dan klien saya sangat terkesan.
sumber
number
memaksa aturan ketat untuk jumlah di banyak browser. Jika pengguna menambahkan spasi (atau koma) untuk memisahkan ribuan Anda tidak akan mendapatkan nilai APA PUN dari input. Ya, bahkan dalam JavaScriptinput.value
akan kosong. Input tipetel
tidak terbatas pada format tertentu sehingga pengguna masih dapat memasukkan apa pun dan validasi adalah proses yang terpisah (untuk ditangani oleh pengembang).Menggunakan
type="email"
atautype="url"
akan memberi Anda papan ketik pada beberapa ponsel setidaknya, seperti iPhone. Untuk nomor telepon, Anda bisa menggunakantype="tel"
.sumber
Ada bahaya dengan menggunakan
<input type="text" pattern="\d*">
untuk memunculkan keyboard numerik. Pada firefox dan chrome, ekspresi reguler yang terdapat dalam pola menyebabkan browser memvalidasi input ke ekspresi itu. kesalahan akan terjadi jika tidak cocok dengan pola atau dibiarkan kosong. Waspadai tindakan yang tidak diinginkan di browser lain.sumber
novalidate
atribut pada kontenform element
harus menangani masalah validasi otomatis. Pastikan untuk melakukan validasi sendiri.Dengan Inputmode Anda dapat memberikan petunjuk ke browser.
sumber
Saya pikir
type="number"
yang terbaik untuk halaman web semantik. Jika Anda hanya ingin mengganti keyboard, Anda dapat menggunakantype="number"
atautype="tel"
. Dalam kedua kasus, iPhone tidak membatasi input pengguna. Pengguna masih dapat mengetik (atau menempelkan) karakter apa pun yang diinginkannya. Satu-satunya perubahan adalah keyboard yang ditampilkan kepada pengguna. Jika Anda ingin pembatasan apa pun di luar ini, Anda perlu menggunakan JavaScript.sumber
type="number"
adalah untuk mengapung.type="text"
adalah untuk string. Yang Anda inginkan adalah integer. Saya pikir float lebih dekat ke integer daripada string. Bagaimana menurut anda?01920
untuk1920
.Bagi saya solusi terbaik adalah:
Untuk angka integer, yang memunculkan pad 0-9 di android dan iphone
Anda juga mungkin ingin melakukan ini untuk menyembunyikan pemintal di firefox / chrome / safari, sebagian besar klien berpikir mereka terlihat jelek
Dan tambahkan novalidate = 'novalidate' ke elemen formulir Anda, jika Anda melakukan validasi khusus
Ps kalau-kalau Anda benar-benar ingin angka floating point setelah semua, langkah ke presisi apa pun yang Anda suka, akan menambahkan '.' ke android
sumber
Tahun 2018:
bekerja untuk Android dan iOS.
Saya menguji pada Android (^ 4.2) dan iOS (11.3)
sumber
Anda dapat mencoba seperti ini:
Tapi hati-hati: Jika input Anda mengandung sesuatu selain nomor, itu tidak akan dikirim ke server.
sumber
Saya tidak dapat menemukan jenis yang paling cocok untuk saya dalam semua situasi: Saya perlu default ke entri numerik (entri "7.5" misalnya) tetapi juga pada waktu-waktu tertentu mengizinkan teks ("pass" misalnya). Pengguna menginginkan keypad numerik (entri 7,5 misalnya) tetapi entri teks sesekali diperlukan ("lulus" misalnya).
Alih-alih apa yang saya lakukan adalah menambahkan kotak centang ke formulir dan memungkinkan pengguna untuk beralih input saya (id = "inputSresult") antara type = "number" dan type = "text".
Kemudian saya mengirimkan handler klik ke kotak centang yang mengubah jenis antara teks dan nomor berdasarkan apakah kotak centang di atas dicentang:
Ini bekerja dengan baik untuk kita.
sumber
itu akan memberi Anda input teks menggunakan tombol angka
sumber
coba ini:
lihat: https://answers.laserfiche.com/questions/88002/Gunakan-number-field-input-type-with-Field-Mask
sumber