Saat ini saya memiliki kode berikut
<input type="number" />
itu keluar untuk sesuatu seperti ini
Hal-hal pemilih kecil di sebelah kanan memungkinkan angka untuk menjadi negatif. Bagaimana saya mencegahnya?
Saya ragu menggunakan type="number"
, ini menyebabkan lebih banyak masalah daripada menyelesaikannya, saya akan memeriksa kewarasannya, jadi haruskah saya kembali menggunakan type="text"
?
Jawaban:
Menambahkan sebuah
min
atributsumber
min="0.000001"
akan membantu dalam banyak kasus. Lebih dari 6 tempat desimal, JavaScript akan mengubahnya menjadi format eksponen.Saya telah menemukan solusi lain untuk mencegah angka negatif.
sumber
oninput="validity.valid||(value='');"
menghentikan satu dari mengetik-ve nomorTergantung pada seberapa tepat Anda ingin menjadi. Anda hanya ingin menerima bilangan bulat, daripada:
Jika Anda ingin mengapung dengan, misalnya, dua digit setelah titik desimal:
sumber
max
nilai.Anda dapat memaksa input hanya berisi bilangan bulat positif dengan menambahkan
onkeypress
di dalaminput
tag.Di sini,
event.charCode >= 48
pastikan hanya angka yang lebih besar dari atau sama dengan 0 yang dikembalikan, sementaramin
tag memastikan bahwa Anda dapat mencapai minimum 1 dengan menggulir di dalam bilah masukan.sumber
Anda dapat menggunakan yang berikut untuk
type="number"
menerima hanya angka positif:sumber
Anda dapat mencegah input negatif dalam formulir input angka dengan yang berikut ini:
sumber
Mencoba
<input type="number" pattern="^[0-9]" title='Only Number' min="1" step="1">
sumber
Jika membutuhkan input teks , polanya juga berfungsi
sumber
Saya tidak dapat menemukan solusi sempurna karena beberapa pekerjaan untuk memasukkan tetapi tidak untuk salin & tempel, beberapa sebaliknya. Solusi ini bekerja untuk saya. Ini mencegah dari angka negatif, mengetik "e", salin & tempel teks "e".
buat fungsi.
tambahkan properti ini ke input. ini mencegah dua dari copy & paste teks non-angka, termasuk "e". Anda harus bersama-sama untuk membuat efek.
Jika Anda menggunakan Vue, Anda dapat merujuk jawaban ini di sini . Saya telah mengekstraknya ke dalam mixin yang dapat digunakan kembali.
sumber
tambahkan kode ini di tipe input Anda;
sebagai contoh:
sumber
Solusi lain adalah dengan menggunakan Js untuk membuatnya positif (opsi min dapat dinonaktifkan dan tidak valid ketika pengguna mengetikkan sesuatu). Negatif jika tidak diperlukan dan acara ('keydown') juga dapat digunakan!
sumber
Itu tergantung pada apakah Anda menginginkan bidang int atau float. Seperti apa keduanya nanti:
Field int memiliki validasi yang benar, karena minnya adalah 1. Field float menerima 0, namun; untuk mengatasinya, Anda dapat menambahkan satu validator kendala lagi :
JSFiddle di sini.
Perhatikan bahwa tidak satu pun dari solusi ini yang sepenuhnya mencegah pengguna mencoba mengetik input yang tidak valid, tetapi Anda dapat memanggil
checkValidity
ataureportValidity
mengetahui apakah pengguna telah mengetikkan input yang valid.Tentu saja, Anda harus tetap memiliki validasi sisi-server karena pengguna selalu dapat mengabaikan validasi sisi-klien.
sumber
Coba ini:
null
dannegitive
nilai.sumber
Jika Anda mencoba memasukkan angka negatif, event onkeyup memblokir ini dan jika Anda menggunakan panah pada nomor input, event onblur menyelesaikan bagian itu.
sumber
sumber
Dengan jenis input teks Anda dapat menggunakan ini untuk validasi yang lebih baik,
sumber
Coba ini:
sumber