Le site number
a un step
qui contrôle les nombres valides (ainsi que la valeur max
et min
), qui a pour valeur par défaut 1
. Cette valeur est également utilisée par les implémentations pour les boutons pas à pas (c'est-à-dire qu'en appuyant sur le haut, on augmente de step
).
Il suffit de modifier cette valeur comme bon vous semble. Pour l'argent, deux décimales sont probablement attendues :
<input type="number" step="0.01">
(J'ai aussi mis min=0
si elle ne peut être que positive)
Si vous préférez autoriser un nombre quelconque de décimales, vous pouvez utiliser la fonction step="any"
(bien que pour les devises, je recommande de s'en tenir à 0.01
). Dans Chrome et Firefox, les boutons de pas à pas s'incrémentent ou se décrémentent de 1 lorsqu'ils sont utilisés. any
. (merci à la réponse de Michal Stefanow pour l'avoir fait remarquer any
et voir la spécification pertinente ici )
Voici un terrain de jeu montrant comment les différentes étapes affectent les différents types d'entrée :
<form>
<input type=number step=1 /> Step 1 (default)<br />
<input type=number step=0.01 /> Step 0.01<br />
<input type=number step=any /> Step any<br />
<input type=range step=20 /> Step 20<br />
<input type=datetime-local step=60 /> Step 60 (default)<br />
<input type=datetime-local step=1 /> Step 1<br />
<input type=datetime-local step=any /> Step any<br />
<input type=datetime-local step=0.001 /> Step 0.001<br />
<input type=datetime-local step=3600 /> Step 3600 (1 hour)<br />
<input type=datetime-local step=86400 /> Step 86400 (1 day)<br />
<input type=datetime-local step=70 /> Step 70 (1 min, 10 sec)<br />
</form>
Comme d'habitude, j'ajouterai une petite note : n'oubliez pas que la validation côté client n'est qu'une commodité pour l'utilisateur. Vous devez également valider du côté du serveur !