comment valider pour de l'argent dans jQuery où le montant maximum que je peux entrer est de 9999,99 , de sorte que mes exigences sont les suivantes: 1.Il ne devrait permettre que les chiffres et un point 2. La longueur maximale est de 7 (point compris) 3.avant la longueur maximale du point est de 4 4.après la longueur maximale du point est de 2
ma zone de texte n'autorise actuellement que les chiffres et un point avec le code suivant
$('#txtpaymentamnt, #txttenderamt').on("keypress", function (e) {
alert(e.which);
if (e.which != 8 && e.which != 0 && ((e.which < 48 || e.which > 57) && e.which != 46)) {
e.preventDefault();
}
Vous pouvez le faire avec une expression régulière: /^\d{0,4}(\.\d{0,2})?$/
MODIFIER:
Voici le demandé violon
Avec plugin de validation jQuery vous pouvez définir votre propre règle en utilisant l'expression régulière de Jack (que je n'ai pas encore testée) comme ceci:
jQuery.validator.addMethod(
"money",
function(value, element) {
var isValidMoney = /^\d{0,4}(\.\d{0,2})?$/.test(value);
return this.optional(element) || isValidMoney;
},
"Insert "
);
Ensuite, vous pouvez définir la règle avec la méthode validate:
$("#myForm").validate({
rules: {
nameOfMyInputField: {
money: true,
}
}
});
Comme vous l'avez dit, si vous utilisez MVC
. MVC
framework fournit annotations
qui peut être utilisé pour obtenir les meilleurs effets. Même s'il n'y a pas d'annotation de données explicite pour un decimal
.
La suite peut être utilisée pour deux décimales
[RegularExpression(@"^\d+.\d{0,2}$")]
Et pour la portée, vous pouvez utiliser
[Range(0, 9999.99)]
Donc, votre champ modèle devient
[RegularExpression(@"^\d+.\d{0,2}$")]
[Range(0, 9999.99)]
public decimal Money{ get; set; }
J'espère que ça aide
Si j'étais vous, j'utiliserais la fonction isNumeric dans cette réponse pour vérifier si l'entrée est un nombre, puis vérifiez si le nombre est valide pour votre cas.
Pour avoir un "numéro valide" (selon vos exigences), il doit:
Soyez compris entre 0 et 9999,99 (maximum de 4 chiffres avant le point).
Avoir un maximum de 2 chiffres décimaux. Un bon moyen de vérifier cela consiste à tronquer le nombre après le nième chiffre (dans votre cas, le deuxième) et à le comparer à la valeur d'origine (deux valeurs différentes signifient que le deuxième nombre a plus de chiffres décimaux que le premier). Utilisez Math.round(number*100)/100
pour tout tronquer après le deuxième chiffre décimal.
J'espère que cela vous aide à résoudre vos problèmes.
J'ai créé un petit Gist qui pourrait aider quelqu'un:
saisie avec le format en tant que devise et un bouton pour représenter la soumission du formulaire
https://Gist.github.com/cpoDesign/8788cb6621b64c45285c
j'espère que ça aide