Всегда показывать 2 знака после запятой в типе ввода number

#html

#HTML

Вопрос:

У меня есть <input type="number" value="0.00" min="0.00" max="1.00" step="0.05"> , но когда он достигает 0,1 или 0,2 или 0,3 и т.д. Мне нужно показать 0.10 вместо 0.1, 1.00 вместо 1

Я попробовал pattern="^d (.|,)d{2}$" атрибут, но он не работает. Есть ли какой-либо способ добиться этого?

Ответ №1:

Вы можете реализовать onchange событие и использовать toFixed(2)

 <input type="number" onchange="(function(el){el.value=parseFloat(el.value).toFixed(2);})(this)" value="0.00" min="0.00" max="1.00" step="0.05">  

Комментарии:

1. На помощь приходят выражения функций, вызываемые немедленно (IIFE)

Ответ №2:

 function onInput(event) {
  let value = parseFloat(event.value);
  if (Number.isNaN(value)) {
    document.getElementById('input-1').value = "0.00";
  } else {
    document.getElementById('input-1').value = value.toFixed(2);
  }              
}  
 <input id="input-1" type="number" min="0.00" max="1.00" step="0.05" oninput="onInput(this)" value="0.00" />  

Комментарии:

1. этот вариант еще лучше, поскольку он вызывается при каждом изменении значения.

Ответ №3:

Используйте step 0.01 вместо 0.05 и добавьте EventListener при изменении значения, чтобы принудительно использовать фиксированный десятичный знак:

 var numberElement = document.querySelector('.number-decimal');
numberElement.addEventListener('change',alterNumber);

function alterNumber(event){
var el = event.target;
var elValue = el.value;
el.value = parseFloat(elValue).toFixed(2);

}  
 <input class="number-decimal" type="number" value="0.00" min="0.00" max="1.00" step="0.01" placeholder="0.00">