Apakah ada cara untuk memformat input[type='number']
nilai agar selalu menampilkan 2 tempat desimal?
Contoh: Saya ingin melihat, 0.00
bukan 0
.
Dipecahkan mengikuti saran dan menambahkan sepotong jQuery untuk memaksa format pada bilangan bulat:
parseFloat($(this).val()).toFixed(2)
robot_speed = parseFloat(robot_speed).toFixed(2)
change
metode untuk memicunya setiap kali bidang berubah: stackoverflow.com/a/58502237/2056125Anda tidak bisa benar-benar, tetapi Anda setengah langkah mungkin:
sumber
Menggunakan
step
atribut akan mengaktifkannya . Ini tidak hanya menentukan berapa banyak itu seharusnya siklus, tapi juga angka yang diizinkan. Menggunakanstep="0.01"
harus melakukan triknya, tetapi ini mungkin tergantung pada bagaimana browser mematuhi standar.sumber
input[type="text"]
dengan semua lonceng dan peluit asli yang datang denganinput[type="number"]
benar - benar reimplimented untuknya, atau menukar bidang ini dengan yang lain untuk menampilkan nilai bergantung pada status elemen.Solusi yang digunakan
input="number"
step="0.01"
bekerja dengan baik untuk saya di Chrome, namun tidak berfungsi di beberapa browser, khususnya Frontmotion Firefox 35 dalam kasus saya .. yang harus saya dukung.Solusi saya adalah menggunakan jQuery dengan plugin jQuery Mask Igor Escobar, sebagai berikut:
Ini berfungsi dengan baik, tentu saja seseorang harus memeriksa nilai yang dikirimkan sesudahnya :) CATATAN, jika saya tidak harus melakukan ini untuk kompatibilitas browser, saya akan menggunakan jawaban di atas oleh @Rich Bradshaw.
sumber
type
atribut input adalahnumber
atautext
. Jika ia kembalitext
meskipun HTML ditulis seperti itunumber
maka browser tidak mendukung jenis itu, dan mengaitkan perilaku ini padanya adalah tindakan yang tepat.Berdasarkan ini jawaban dari @Guilherme Ferreira Anda dapat memicu
parseFloat
metode setiap kali perubahan lapangan. Oleh karena itu, nilai selalu menunjukkan dua tempat desimal, meskipun pengguna mengubah nilai dengan mengetik angka secara manual.sumber
change()
fungsi tersebut akan dijalankan dalam waktu singkat antara input pengguna dan klik tombol kirim. Oleh karena itu, ini seharusnya tidak menjadi masalah.Ini berfungsi untuk memaksakan maksimal 2 tempat desimal tanpa pembulatan otomatis menjadi 2 tempat jika pengguna belum selesai mengetik.
sumber
Jika Anda mendarat di sini hanya bertanya-tanya bagaimana cara membatasi hingga 2 tempat desimal, saya memiliki solusi javascript asli:
Javascript:
HTML:
Perhatikan bahwa ini tidak dapat AFAIK, bertahan dari bug chrome ini dengan input nomor.
sumber
Saya tahu ini adalah pertanyaan lama, tetapi bagi saya tampaknya tidak ada dari jawaban ini yang menjawab pertanyaan yang ditanyakan jadi semoga ini akan membantu seseorang di masa depan.
Ya, Anda selalu dapat menampilkan 2 tempat desimal, tetapi sayangnya ini tidak dapat dilakukan dengan atribut elemen saja, Anda harus menggunakan JavaScript.
Saya harus menunjukkan bahwa ini tidak ideal untuk angka besar karena akan selalu memaksa angka nol yang tertinggal, jadi pengguna harus memindahkan kursor ke belakang alih-alih menghapus karakter untuk menetapkan nilai yang lebih besar dari 9,99
sumber
Ini adalah pemformat cepat di JQuery menggunakan
.toFixed(2)
fungsi untuk dua tempat desimal.Kekurangan: Anda harus memanggil ini setiap kali nomor masukan diubah untuk memformatnya.
Catatan: untuk beberapa alasan meskipun input bertipe 'number', jQuery
val()
mengembalikan string. Oleh karena ituparseFloat()
.sumber
Pendekatan pilihan saya, yang menggunakan
data
atribut untuk menahan status nomor:sumber
Jawaban teratas memberi saya solusi tetapi saya tidak suka input pengguna segera diubah jadi saya menambahkan penundaan yang menurut saya berkontribusi pada pengalaman pengguna yang lebih baik
https://jsfiddle.net/908rLhek/1/
sumber
sumber
ui-number-mask
untuk sudut, https://github.com/assisrafael/angular-input-maskshanya ini:
Jika Anda memberi nilai satu per satu ....
digit per digit
sumber
Coba lihat ini :
sumber
Ini jawaban yang benar:
sumber