Skip to content
Advertisement

Number input min attribute not working with floats

With the below HTML, when I type the value 3 in the input and click on submit, Chrome (at least) shows the following error in a popup:

Please enter a valid value. The two nearest valid values are 2.0001 and 3.0001.

This doesn’t make sense. I’ve set the minimum value to be 0.0001 and I’m entering 3 which is greater than 0.0001.

document.getElementById('form').onsubmit = function(e) {
  e.preventDefault()
}
<form id="form">

  <input placeholder="0.000" 
         id="something" 
         type="number" 
         name="something" 
         min="0.0001" 
         required>
       
  <button type="submit">submit</button>
  
</form>

Advertisement

Answer

The default value for the step attribute is 1, and since you’ve a min applied on your input, there’s no integral n such that min + n * step (0.0001 + n * 1) equals 3.

You can change the step to 0.0001 or any.

document.getElementById('form').onsubmit = function(e) {
  e.preventDefault();
  console.log(e.target.elements[0].value);
}
<form id="form" onsubmit="onSubmit">
  <input
    placeholder="0.000"
    id="something"
    type="number"
    name="something"
    min="0.0001"
    step="any"
    required
  >
  <button type="submit">submit</button>
</form>
User contributions licensed under: CC BY-SA
5 People found this is helpful
Advertisement