Saya membuat halaman web di mana saya memiliki bidang teks input di mana saya ingin hanya mengizinkan karakter numerik seperti (0,1,2,3,4,5 ... 9) 0-9.
Bagaimana saya bisa melakukan ini menggunakan jQuery?
jquery
html
validation
numeric
Prashant
sumber
sumber
Jawaban:
Catatan: Ini adalah jawaban yang diperbarui. Komentar di bawah mengacu pada versi lama yang dipusingkan dengan kode kunci.
jQuery
Cobalah sendiri di JSFiddle .
Tidak ada implementasi jQuery asli untuk ini, tetapi Anda dapat memfilter nilai input teks
<input>
denganinputFilter
plugin berikut (mendukung Salin + Tempel, Seret + Jatuhkan, pintasan keyboard, operasi menu konteks, kunci non-typeable, posisi caret, berbeda tata letak keyboard, dan semua browser sejak IE 9 ):Anda sekarang dapat menggunakan
inputFilter
plugin untuk menginstal filter input:Lihat demo JSFiddle untuk lebih banyak contoh filter masukan. Perhatikan juga bahwa Anda masih harus melakukan validasi sisi server!
JavaScript Murni (tanpa jQuery)
jQuery sebenarnya tidak diperlukan untuk ini, Anda dapat melakukan hal yang sama dengan JavaScript murni juga. Lihat jawaban ini .
HTML 5
HTML 5 memiliki solusi asli dengan
<input type="number">
(lihat spesifikasi ), tetapi perhatikan bahwa dukungan browser bervariasi:step
,min
danmax
atribut.e
danE
masuk ke bidang. Lihat juga pertanyaan ini .Cobalah sendiri di w3schools.com .
sumber
Berikut adalah fungsi yang saya gunakan:
Anda kemudian dapat melampirkannya di kendali Anda dengan melakukan:
sumber
return this.each(function()
?each
darireturn this.each(function()
adalah untuk memungkinkan beberapa objek seperti kata HaggleLad, danreturn
bagian adalah mengembalikan objek jQuery kembali ke pemanggil, untuk memungkinkan rantai seperti$("input[type='text'").ForceNumericOnly().show()
Di barisan:
Gaya tidak mengganggu (dengan jQuery):
sumber
onkeyup="if (/\D/g.test(this.value)) this.value = this.value.replace(/\D/g,'')"
./[^0-9]|^0+(?!$)/g
untuk mencegah deretan nol di depan.Anda bisa menggunakan ekspresi reguler JavaScript sederhana untuk menguji karakter numerik murni:
Ini mengembalikan true jika inputnya numerik atau salah jika tidak.
atau untuk kode kunci acara, gunakan sederhana di bawah ini:
sumber
Anda dapat menggunakan pada acara masukan seperti ini:
Tapi, apa hak istimewa kode ini?
sumber
decimal
antara0.0
sampai24.0
saya tidak dapat membiarkannya masuk.
this.value = Number(this.value.replace(/\D/g, ''));
Singkat dan manis - bahkan jika ini tidak akan pernah menemukan banyak perhatian setelah 30+ jawaban;)
sumber
Gunakan fungsi JavaScript isNaN ,
if (isNaN (document.getElementById ('inputid'). val ()))Pembaruan: Dan di sini artikel yang bagus membicarakannya tetapi menggunakan jQuery: Membatasi Input dalam Kotak Teks HTML ke Nilai Numerik
sumber
document.getElementById('inputid').val()
Bung .. itu masih jquery..val()
adalah hal jquery. use.value
isNaN
sendiri adalah ide yang buruk karena paksaan tipe JavaScript.decimal
antara0.0
sampai24.0
saya tidak dapat membiarkannya masuk.
Sumber: http://snipt.net/GerryEng/jquery-making-textfield-only-accept-numeric-values
sumber
Saya menggunakan ini di file js umum internal kami. Saya hanya menambahkan kelas ke setiap input yang membutuhkan perilaku ini.
sumber
Yang lebih sederhana bagi saya adalah
sumber
this.value.replace(/[^0-9\.]/g,'');
untuk memasukkan persyaratan OP 0-9Kenapa begitu rumit? Anda bahkan tidak perlu jQuery karena ada atribut pola HTML5:
Yang keren adalah ia menampilkan keyboard angka pada perangkat seluler, yang jauh lebih baik daripada menggunakan jQuery.
sumber
Anda dapat melakukan hal yang sama dengan menggunakan solusi yang sangat sederhana ini
Saya merujuk tautan ini untuk solusinya. Ini bekerja dengan sempurna !!!
sumber
decimal
antara0.0
sampai24.0
saya tidak dapat membiarkannya masuk.
Anda dapat mencoba input nomor HTML5 :
Untuk browser yang tidak patuh ada fallback Modernizr dan Webforms2 .
sumber
Atribut pola dalam HTML5 menentukan ekspresi reguler yang nilai elemennya diperiksa.
Catatan: Atribut pola berfungsi dengan jenis input berikut: teks, pencarian, url, tel, email, dan kata sandi.
[0-9] dapat diganti dengan kondisi ekspresi reguler apa pun.
{1,3} itu mewakili minimal 1 dan maksimum 3 digit dapat dimasukkan.
sumber
decimal
antara0.0
sampai24.0
saya tidak dapat membiarkannya masuk.
Sesuatu yang cukup sederhana menggunakan jQuery.validate
sumber
function suppressNonNumericInput (event) {
sumber
decimal
antara0.0
sampai24.0
saya tidak dapat membiarkannya masuk.
Saya sampai pada solusi yang sangat bagus dan sederhana yang tidak mencegah pengguna memilih teks atau menyalin paste seperti solusi lainnya. gaya jQuery :)
sumber
Anda dapat menggunakan fungsi JavaScript ini:
Dan Anda dapat mengikatnya ke kotak teks Anda seperti ini:
Saya menggunakan di atas dalam produksi, dan berfungsi dengan baik, dan itu adalah lintas-browser. Selain itu, tidak tergantung pada jQuery, jadi Anda dapat mengikatnya ke kotak teks Anda dengan JavaScript sebaris:
sumber
Saya pikir itu akan membantu semua orang
sumber
if(event.which!=8 && event.which!=0 && (event.which<48 || event.which>57) && (event.which<96 || event.which>105)) return;
Saya menulis milik saya berdasarkan postingan @ user261922 di atas, sedikit dimodifikasi sehingga Anda dapat memilih semua, tab dan dapat menangani beberapa bidang "angka saja" pada halaman yang sama.
sumber
Ini adalah solusi cepat yang saya buat beberapa waktu lalu. Anda dapat membaca lebih lanjut tentang itu di artikel saya:
http://ajax911.com/numbers-numeric-field-jquery/
sumber
Anda ingin mengizinkan tab:
sumber
Berikut adalah jawaban yang menggunakan pabrik Widget jQuery UI. Anda dapat menyesuaikan karakter apa yang diizinkan dengan mudah.
Itu akan memungkinkan angka, tanda angka dan jumlah dolar.
sumber
Ini sepertinya tidak bisa dipecahkan.
sumber
Perlu memastikan Anda memiliki tombol angka dan tombol tab yang berfungsi juga
sumber
Saya ingin membantu sedikit, dan saya membuat versi saya,
onlyNumbers
fungsinya ...Cukup tambahkan tag input "... input ... id =" price "onkeydown =" return onlyNumber (event) "..." dan Anda selesai;)
sumber
Saya juga ingin menjawab :)
Itu saja ... hanya angka. :) Hampir bisa bekerja hanya dengan 'blur', tapi ...
sumber
Cara sederhana untuk memeriksa bahwa nilai yang dimasukkan adalah angka:
sumber
Hanya perlu menerapkan metode ini di Jquery dan Anda dapat memvalidasi kotak teks Anda untuk hanya menerima nomor saja.
Coba solusi ini di sini
sumber
Anda dapat mencoba input nomor HTML5:
Elemen tag input ini sekarang hanya akan mengambil nilai antara 0 hingga 9 karena atribut min diatur ke 0 dan atribut maks diatur ke 9.
untuk informasi lebih lanjut tentang kunjungi http://www.w3schools.com/html/html_form_input_types.asp
sumber