Comment séparer les milliers pendant la saisie d’un nombre
Il vous est sûrement déjà arrivé de saisir dans un champ un montant comme 1000000, puis de vous demander s’il ne manque pas un zéro ou s’il n’y en a pas un de trop. Ce serait bien de saisir 1 000 000, mais il faut alors retirer les séparateurs avant l’enregistrement dans la base de données. JavaScript peut aider.
Le plus fiable est d’ajuster la valeur finale du champ dans l’événement input (état en septembre 2026). Contrôler les touches enfoncées ne fonctionne pas bien – la propriété keyCode est obsolète et, sur les claviers des téléphones, elle renvoie souvent 229 au lieu de la vraie touche. Version pour les nombres entiers avec une espace comme séparateur de milliers :
<input id="amount" class="input_number" type="text" name="amount" inputmode="numeric" value="">
<script>
document.querySelectorAll('.input_number').forEach(function (field) {
field.addEventListener('input', function () {
var digits = field.value.replace(/\D/g, ''); // ne garde que les chiffres
field.value = digits.replace(/\B(?=(\d{3})+(?!\d))/g, ' ');
});
});
</script>
L’attribut inputmode="numeric" fait afficher un clavier numérique sur les téléphones. Avant l’enregistrement, retirez les séparateurs (sur le serveur, par exemple avec str_replace).
La mise en forme d’un nombre est aussi intégrée : (1234567).toLocaleString('fr-FR') renvoie 1 234 567. Le séparateur est toutefois une espace fine insécable (U+202F) et non une espace ordinaire, et le format français sépare aussi les nombres à quatre chiffres (1 234). Voir aussi l’article Les événements en JavaScript (addEventListener).