kendo网格单元格验证小数点后两位

时间:2018-10-30 06:37:38

标签: kendo-ui kendo-grid

我有一个需要显示折扣的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;
                                    }
                                }
                            }
                        }

enter image description here

我需要显示验证消息,该字段仅接受2个小数位。请帮忙。

3 个答案:

答案 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;
                                    }
                                }
                            }
                        }

enter image description here