web-dev-qa-db-fra.com

comment valider de l'argent en jquery

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();
    }
8
Santosh

Vous pouvez le faire avec une expression régulière: /^\d{0,4}(\.\d{0,2})?$/

MODIFIER:

Voici le demandé violon

16
James Hibbard

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,
    }
}
});
9
Moni

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

0
Nitin Varpe

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.

0
pauix

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

0
cpoDesign