我在列中有一个文本框" amount"。在这里,我想在小数点前输入5个数字,在小数点后输入2个数字,如下所示" 99999.99"。我想在jquery中这样做。我使用以下代码,
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);
}
}
});
};

请帮帮我,在此代码中如何限制值。
答案 0 :(得分:2)
使用Regex测试输入是否与输入范围匹配。的 Fiddle 强>
([1-9]{1,5})
将前5个字符限制为仅限数字,并且不能以0开头
(\.([0-9]{2})?
将用户限制在.
之后的2个位置,并且也是懒惰选择器,这意味着不必应用。示例:123匹配,123.23匹配。
$('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" />
&#13;
答案 1 :(得分:0)
你可以使用正则表达式!
function validateAmount(amount){
var re = /^\d{1,5}(\.\d{1,2})?$/;
return re.test(amount);
}
用法:
if(validateAmount(20.2)) console.log('validated');
else console.log('validation failed');
说明:
\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.
答案 2 :(得分:0)
最简单的方法是首先添加“input.js”文件。然后使用以下2行。它工作得很好。
var inputConfig = {aSep:'', aNeg:'', mDec:2, mNum:5};
$('.com1').autoNumeric(inputConfig);
答案 3 :(得分:-1)
你可以像这样使用数学吗?
$('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');
}
});