我有一个需要显示折扣的kendo网格。我必须执行验证以使其接受0.00到100之间的数字。我编写了接受0到100之间的数字的代码,现在我需要实现小数点后2位以及验证。请帮忙。
$(gridname).kendoGrid({
dataSource: {
data: data.ReportData,
schema: {
model: {
fields: {
ProposedDiscountNST: {format: "{0:n2}",
validation: {
required: true,
proposeddiscountNSTvalidation: function (input) {
if (input.val() != "" && input.is("[name='ProposedDiscountNST']")) {
input.attr("data-proposeddiscountNSTvalidation-msg", "Should be between 0.00 & 100");
// return input.val() >= 0 && input.val() < 101 && input.val() % 1 == 0;
return input.val() >= 0 && input.val() < 101 ; // Accepts max 2 decimal digits
} else {
return true;
}
}
}
}
我需要显示验证消息,该字段仅接受2个小数位。请帮忙。
答案 0 :(得分:0)
如何获取小数位数在多个地方都有说明,例如Simplest way of getting the number of decimals in a number in JavaScript获取此号码并检查是否可以。
一句话:您正在检查input.val() < 101
是否包含100.7
,并且似乎与您的要求“ 0.00至100之间”不符。
答案 1 :(得分:0)
您可以通过将数字与固定数字进行比较来获得小数位数(number.toFixed(x)将给定数字四舍五入为十进制小数):
$(gridname).kendoGrid({
dataSource: {
data: data.ReportData,
schema: {
model: {
fields: {
ProposedDiscountNST: {format: "{0:n2}",
validation: {
required: true,
proposeddiscountNSTvalidation: function (input) {
if (input.val() != "" && input.is("[name='ProposedDiscountNST']")) {
input.attr(
"data-proposeddiscountNSTvalidation-msg",
"Value should be between 0.00 & 100 and have a maximum of 2 decimals"
);
return
input.val() >= 0 &&
input.val() <= 100 &&
input.val() == input.val().toFixed(2)
;
} else {
return true;
}
}
}
}
}
}
}
}
});
答案 2 :(得分:-1)
实际上,我尝试了Stephan T.的上述解决方案,但不幸的是它没有用。所以我尝试了这种方法,它奏效了。因此,发布它以便对某些人有所帮助。
$(gridname).kendoGrid({
dataSource: {
data: data.ReportData,
schema: {
model: {
fields: {
ProposedDiscountNST: {format: "{0:n2}",
validation: {
required: true,
proposeddiscountNSTvalidation: function (input) {
if (input.val() != "" && input.is("[name='ProposedDiscountNST']")) {
input.attr("data-proposeddiscountNSTvalidation-msg", "Should be between 0.00 & 100");
// return input.val() >= 0 && input.val() < 101 && input.val() % 1 == 0;
return input.val() >= 0 && input.val() <= 100 && ((parseFloat(input.val()) / (parseFloat(input.val()).toFixed(2))) == 1 ); // Accepts max 2 decimal digits
} else {
return true;
}
}
}
}