Autoriser uniquement 2 points décimaux lors de la saisie d'un numéro à une zone de texte à l'aide de jQuery.
Veuillez suggérer toute regex pour autoriser seulement deux décimales dans la zone de texte. p>
J'ai essayé le code suivant. P>
5 Réponses :
Vous pouvez le faire sans regex:
C'est la meilleure solution. Voici un jsfiddle attaché pour montrer que cela fonctionne. jsfiddle.net/vfz5f
Alors comment trouver des nombres décimaux dans cela ??
@RJ. que veux-tu dire? Trouvez un nombre de décimales ou de le réparer à 4 décimales par ex.
Dans ce Jsfiddle, j'ai pu ajouter des chiffres, des lettres, des périodes multiples, etc. Qu'est-ce qui ne va pas?
function checkDecimal(el){ var ex = /^[0-9]+\.?[0-9]*$/; if(ex.test(el.value)==false){ el.value = el.value.substring(0,el.value.length - 1); } }
Je ne faisais que tester à l'aide de Regex pour l'apprendre. Mais je recommande d'aller avec la solution de rôti.
Une autre solution de travail
$(".two-decimals").on("keypress", function (evt) { var $txtBox = $(this); var charCode = (evt.which) ? evt.which : evt.keyCode if (charCode > 31 && (charCode < 48 || charCode > 57) && charCode != 46) return false; else { var len = $txtBox.val().length; var index = $txtBox.val().indexOf('.'); if (index > 0 && charCode == 46) { return false; } if (index > 0) { var charAfterdot = (len + 1) - index; if (charAfterdot > 3) { return false; } } } return $txtBox; //for chaining });
html: strong> $(document).ready(function () {
$('body').on('keyup', '.maskedExt', function () {
var num = $(this).attr("maskedFormat").toString().split(',');
var regex = new RegExp("^\\d{0," + num[0] + "}(\\.\\d{0," + num[1] + "})?$");
if (!regex.test(this.value)) {
this.value = this.value.substring(0, this.value.length - 1);
}
});
});
A obtenu la vitesse
\ d + (?: \. \ D {1,2})? Code>?