Tôi đã phải quyết định giữa các chuyển đổi parseFloat () và Number () trước khi tôi có thể thực hiện cuộc gọi toFixed (). Đây là một ví dụ về định dạng số đầu vào người dùng sau khi chụp.
HTML:
<input type="number" class="dec-number" min="0" step="0.01" />
Xử lý sự kiện:
$('.dec-number').on('change', function () {
const value = $(this).val();
$(this).val(value.toFixed(2));
});
Đoạn mã trên sẽ dẫn đến ngoại lệ TypeError. Lưu ý rằng mặc dù kiểu đầu vào html là "số", nhưng đầu vào của người dùng thực sự là kiểu dữ liệu "chuỗi". Tuy nhiên, hàm toFixed () chỉ có thể được gọi trên một đối tượng là Số.
Mã cuối cùng của tôi sẽ trông như sau:
$('.dec-number').on('change', function () {
const value = Number($(this).val());
$(this).val(value.toFixed(2));
});
Lý do tôi thích sử dụng với Số () so với parseFloat () là vì tôi không phải thực hiện xác thực bổ sung cho cả chuỗi đầu vào trống, cũng như giá trị NaN. Hàm Number () sẽ tự động xử lý một chuỗi rỗng và biến nó thành 0.