/ / Validation pour entrer le montant dans la zone de texte - jquery, jquery-ui

Validation pour entrer le montant dans la zone de texte - jquery, jquery-ui

J'ai une zone de texte dans la colonne "montant". Ici, je veux entrer seulement 5 nombres avant le nombre décimal et 2 chiffres après le nombre décimal, comme ceci "99999.99". Je veux faire cela dans jQuery. J'utilise le code suivant,

editor: { type:"textbox",style:"z-index:10000;position:relative;",init:filterhandler,cls:"com1",},


var filterhandler = function (ui) {
$(".com1").keyup(function(){
var value = $(".com1").val();
if(value.indexOf(".") === -1){
var max=99999;
if( value > max){
$("div.jGrowl").find("div.jGrowl-notification").parent().remove();
$.jGrowl("You can"t  enter more than 99999.99", { sticky: false });
value = value.substring(0,5);
$(".com1").val(value);
value = value.substring(0,3);
}
}else{
var max = 2;
var v=value.split(".");
var fstvalue= v[0];
var scndValue=v[1];
$(".com1").css({ "border-color": "rgb(153, 188, 232)"});
if(scndValue.length > max){
$("div.jGrowl").find("div.jGrowl-notification").parent().remove();
$.jGrowl("You can"t  enter more than 99999.99", { sticky: false });
scndValue = scndValue.substring(0,2);
value=fstvalue+"."+scndValue;
$(".com1").val(value);
}
}
});
};

S'il vous plaît aidez-moi, Dans ce code, comment limiter la valeur.

Réponses:

2 pour la réponse № 1

Utilisez Regex pour tester si l’entrée correspond à votre plage d’entrée. Violon

([1-9]{1,5}) limite les 5 premiers caractères à des chiffres uniquement et ne peut pas commencer par un 0.
(.([0-9]{2})? limite l'utilisateur à seulement 2 places après la . et est également un sélecteur paresseux, ce qui signifie que cela ne doit pas être appliqué. Exemple: 123 correspondront, tandis que 123.23 correspondra également.

$("input").blur(function() {

var pat = /([1-9]{1,5})(.([0-9]){2})?/g;

if ( pat.test(this.value) ) {
console.log("You"re Good!");
} else {
console.log("No match!");
}

});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" />


0 pour la réponse № 2

vous pouvez utiliser l'expression régulière à la place!

function validateAmount(amount){
var re = /^d{1,5}(.d{1,2})?$/;
return re.test(amount);
}

Usage:

if(validateAmount(20.2)) console.log("validated");
else console.log("validation failed");

Explication

d //for digits
{1,5} // min 1 char to max 5 chars
. // to escape char .
d //again digits
{0,2} again min 0 to max 2 chars
? //for optional, as after decimal points are optional, it"s needed to be be wrapped in parentheses.

0 pour la réponse № 3

Le moyen le plus simple est d’ajouter d’abord le fichier «input.js». Et puis utilisez les 2 lignes suivantes. Cela fonctionne parfaitement.

    var inputConfig = {aSep:"", aNeg:"", mDec:2, mNum:5};
$(".com1").autoNumeric(inputConfig);


-1 pour la réponse № 4

Pourriez-vous simplement utiliser les mathématiques comme ça?

$("form").submit(function(e) {
e.preventDefault();
amount = $(".amount").val();
if(amount > 9999.99) {
alert("you cannot enter more than 9999.99");
} else {
alert("all good here");
}
});

http://jsbin.com/tugimayiro/1/