Autoriser 2 décimales dans

J’ai un et je souhaite restreindre la saisie des utilisateurs à des nombres ou à des nombres ayant des décimales jusqu’à 2 décimales.

Fondamentalement, je demande un apport de prix.

Je voulais éviter de faire des regex. Y a-t-il un moyen de le faire?

  

Au lieu de step="any" , qui permet un nombre quelconque de décimales, utilisez step=".01" , qui autorise jusqu’à deux décimales.

Plus de détails dans la spécification: https://www.w3.org/TR/html/sec-forms.html#the-step-atsortingbute

Pour la monnaie, je suggère:

 

Voir http://jsfiddle.net/vx3axsk5/1/

Les propriétés HTML5 “step”, “min” et “pattern” seront validées lorsque le formulaire est soumis, pas onblur. Vous n’avez pas besoin de l’ step si vous avez un pattern et vous n’avez pas besoin d’un pattern si vous avez un step . Vous pouvez donc revenir à step="any" avec mon code car le pattern le validera quand même.

Si vous souhaitez valider onblur, je pense que donner un repère visuel à l’utilisateur est également utile, par exemple pour colorer l’arrière-plan en rouge. Si le navigateur de l’utilisateur ne supporte pas le type="number" il utilisera le type="text" . Si le navigateur de l’utilisateur ne prend pas en charge la validation du modèle HTML5, mon extrait JavaScript n’empêche pas la soumission du formulaire, mais il donne un indice visuel. Ainsi, pour les personnes ayant un support HTML5 médiocre et les personnes qui tentent de pirater la firebase database avec JavaScript désactivé ou de falsifier les requêtes HTTP, vous devez de nouveau valider sur le serveur. Le sharepoint validation sur le front-end est une meilleure expérience utilisateur. Donc, tant que la plupart de vos utilisateurs ont une bonne expérience, il est bon de compter sur les fonctionnalités HTML5 à condition que le code fonctionne toujours et que vous puissiez valider sur le back-end.

Si tel est le cas, quiconque recherche une expression régulière qui n’autorise que des nombres avec une décimale facultative

 ^\d*(\.\d{0,2})?$ 

Étape 1: Accrochez votre zone de saisie du numéro HTML à un événement onchange

 myHTMLNumberInput.onchange = setTwoNumberDecimal; 

ou dans le code html

  

Étape 2: Écrivez la méthode setTwoDecimalPlace

 function setTwoNumberDecimal(event) { this.value = parseFloat(this.value).toFixed(2); } 

vous pouvez changer 2 décimales ou plus de

tofixé (2)

Essayez ceci pour n’autoriser que 2 décimales dans le type d’entrée

  

Utilisez ce code

  

Par défaut, la valeur d’étape pour les éléments d’entrée HTML5 est step = “1”.

J’ai trouvé que jQuery était ma meilleure solution.

 $( "#my_number_field" ).blur(function() { this.value = parseFloat(this.value).toFixed(2); }); 

En entrée:

 step="any" class="two-decimals" 

Sur script:

 $(".two-decimals").change(function(){ this.value = parseFloat(this.value).toFixed(2); });