Numbers as spinboxes

Another take on validating the input from your users, is using the number attribute. There are many situations where you might need the user to pick a number and even though it seems pretty straight forward it’s not. Look at it this way: If I asked you to pick a number, you would might say -5. But I meant a number from 1 to 10. Can you choose 3.75? I’d say you are just being argumentative as you should have known I meant a whole number. As you can see a number is not just a number and normally you have some implied boundaries.

And this is what makes the number attribute so special- the fact that you can control the range of numbers the user can select from, force the choices to be only integers and the step scale factor is set to be 1 by default. When you use the number element it is displayed as a spinbox.

Let’s have a look at the simplest way of using the number input type – The smallest possible value is per default 1, the step scale factor is 1 and there is no maximum – hit the “Try this example" button to see what it looks like:

<form>
<input type="number" required>
<input type="submit" value="Submit Now!">
</form>

Now let’s say you want to limit your users’ choices to a range of 10 to 20. Then we have to use the min (which specifies the minimum acceptable value for this field) and max (which specifies the maximum acceptable value for this field) attributes, and it looks like this:

<form>
<input type="number" min="10" max="20" required>
<input type="submit" value="Submit Now!">
</form>

I said you could control the step scale and this is done using the step attribute. Additionally, you can preset a number – maybe you have an idea that this is the most common number and this way you make it quicker for the user to fill out the form. In the following example I have set the step scale to 2 and the pre-set value is 16 – here is what it looks like:

<form>
<input type="number" min="10" max="20" step="2" value="16" required>
<input type="submit" value="Submit Now!">
</form>

If you try to go beyond the specified range some browsers will grey out the arrows while others just won't allow you to go any further.

What you have learned