The maxlength
atribut tidak bekerja dengan <input type="number">
. Ini hanya terjadi di Chrome.
<input type="number" class="test_css" maxlength="4" id="flight_number" name="number"/>
sumber
The maxlength
atribut tidak bekerja dengan <input type="number">
. Ini hanya terjadi di Chrome.
<input type="number" class="test_css" maxlength="4" id="flight_number" name="number"/>
Dari dokumentasi MDN untuk<input>
Jika nilai dari jenis atribut
text
,search
,password
,tel
, atauurl
, atribut ini menentukan jumlah maksimum karakter (di Unicode poin kode) bahwa pengguna dapat memasukkan; untuk tipe kontrol lainnya, ini diabaikan.
Jadi maxlength
diabaikan <input type="number">
oleh desain.
Tergantung pada kebutuhan Anda, Anda dapat menggunakan min
dan max
atribut sebagai inon disarankan dalam / nya jawabannya (NB: ini hanya akan menentukan rentang dibatasi, tidak panjang karakter yang sebenarnya dari nilai, meskipun -9.999-9999 akan mencakup semua 0-4 angka digit), atau Anda dapat menggunakan input teks biasa dan memberlakukan validasi pada bidang dengan pattern
atribut baru :
<input type="text" pattern="\d*" maxlength="4">
type="number"
ini adalah tipe baru dari spesifikasi HTML 5. Jika browser Anda uji di tidak mengakuitype="number"
itu akan memperlakukannya sebagaitype="text"
yang tidak menghormatimaxlength
atribut. Ini mungkin menjelaskan perilaku yang Anda lihat.type=number
input dengan mengaturmax
atribut. Atribut ini hanya membatasi jumlah yang dipilih oleh pemintal input.\d*
disiniregex
dan pola adalah hal yang sangat kreatif. Tapi di ponsel, tidak ada bedanyaAndroid
atauiOS
, itutext
input sehingga menyebabkan burukUX
.Panjang max tidak akan bekerja dengan
<input type="number"
cara terbaik yang saya tahu adalah menggunakanoninput
event untuk membatasi maxlength. Silakan lihat kode di bawah ini.sumber
||0/1
oninput="this.value=this.value.slice(0,this.maxLength)"
harus bekerja<input type="number">
stackoverflow.com/questions/18510845/…Banyak orang memposting
onKeyDown()
acara yang tidak berfungsi sama sekali yaitu Anda tidak dapat menghapus begitu Anda mencapai batas. Jadi, alih-alihonKeyDown()
menggunakanonKeyPress()
dan berfungsi dengan sangat baik.Di bawah ini adalah kode kerja:
sumber
number
tipe input html5Saya punya dua cara untuk Anda melakukannya
Pertama: Gunakan
type="tel"
, ini akan berfungsi sepertitype="number"
di seluler, dan menerima panjang maksimal:Kedua: Gunakan sedikit JavaScript:
sumber
Anda dapat menggunakan atribut min dan max .
Kode berikut melakukan hal yang sama:
sumber
9999
yang dapat diketik pengguna secara manual dalam angka yang melebihi panjang itu.Ubah tipe input Anda menjadi teks dan gunakan fungsi "oninput" untuk memanggil fungsi:
Sekarang gunakan Javascript Regex untuk memfilter input pengguna dan batasi hanya pada angka:
Demo: https://codepen.io/aslami/pen/GdPvRY
sumber
Saya pernah mengalami masalah yang sama dan menemukan solusi ini sehubungan dengan kebutuhan saya. Mungkin membantu Seseorang.
Selamat Coding :)
sumber
Anda dapat mencoba ini juga untuk input numerik dengan batasan panjang
sumber
tel
input akan secara otomatis divalidasi seperti itu dan dalam beberapa kasus aneh0
s terkemuka akan diubah menjadi1
s.DEMO - JSFIDDLE
sumber
Ini adalah solusi saya dengan jQuery ... Anda harus menambahkan maxlength ke input type = number Anda
Dan menangani salin dan tempel:
Saya harap ini membantu seseorang.
sumber
this.value = this.value.slice(0, this.maxLength);
Apakah Anda pikir ini memiliki masalah? Saya belum menemukan sejauh ini. Ini mencakup teks yang disisipkan juga.Dalam pengalaman saya kebanyakan masalah di mana orang bertanya mengapa
maxlength
diabaikan adalah karena pengguna diizinkan untuk memasukkan lebih dari jumlah karakter yang "diizinkan".Seperti komentar lain katakan,
type="number"
input tidak memilikimaxlength
atribut dan, sebaliknya, memiliki atributmin
danmax
.Agar bidang membatasi jumlah karakter yang dapat dimasukkan sambil memungkinkan pengguna mengetahui hal ini sebelum formulir dikirimkan (browser harus mengidentifikasi nilai> maks jika tidak), Anda harus (untuk saat ini, setidaknya) menambahkan pendengar ke lapangan.
Berikut ini adalah solusi yang pernah saya gunakan: http://codepen.io/wuori/pen/LNyYBM
sumber
Saya tahu sudah ada jawaban, tetapi jika Anda ingin input Anda berperilaku persis seperti
maxlength
atribut atau sedekat mungkin, gunakan kode berikut:sumber
Chrome (secara teknis, Blink) tidak akan menerapkan panjang maksimum untuk
<input type="number">
.Spesifikasi HTML5 mengatakan bahwa maxlength hanya berlaku untuk jenis teks, url, email, pencarian, tel, dan kata sandi.
sumber
Solusi absolut yang baru saja saya coba adalah:
sumber
Saya akan membuat ini cepat dan mudah dimengerti!
Alih-alih maxlength untuk
type='number'
(maxlength dimaksudkan untuk menentukan jumlah maksimum huruf untuk string dalam suatutext
tipe), gunakanmin=''
danmax=''
.Bersulang
sumber
<input type="number">
hanya saja ... sejumlah input (meskipun, tidak dikonversi dari string ke float via Javascript).Dugaan saya, itu tidak membatasi karakter pada input kunci oleh
maxLength
atau pengguna Anda bisa terjebak dalam "jebakan kunci" jika mereka lupa desimal di awal (Coba letakkan.
indeks at1
ketika<input type"text">
attr "maxLength" telah tercapai ). Namun itu akan memvalidasi pada formulir kirim jika Anda menetapkanmax
atribut.Jika Anda mencoba membatasi / memvalidasi nomor telepon, gunakan
type="tel"
attr / nilai. Ini mematuhimaxLength
attr dan menampilkan keyboard nomor ponsel saja (di browser modern) dan Anda dapat membatasi input ke suatu pola (yaitupattern="[0-9]{10}"
).sumber
Untuk pengguna Bereaksi,
Cukup ganti 10 dengan persyaratan panjang maks
sumber
maxlenght - tipe input teks
menggunakan jQuery:
maxlenght - nomor tipe input
JS
HTML
sumber