проверка ячейки кендо для 2 десятичных знаков - PullRequest
0 голосов
/ 30 октября 2018

У меня есть сетка кендо, которая должна отображать скидки. Я должен выполнить проверку того, что она должна принимать числа от 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 голосов
/ 30 октября 2018

Вы можете получить количество десятичных дробей, сравнив число с фиксированным числом (number.toFixed (x) округляет данное число до 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;
                                }
                            }
                        }
                    }
                }
            }
        }
    }
});
0 голосов
/ 30 октября 2018

На самом деле я попробовал вышеуказанное решение от Стефана Т., но, к сожалению, оно не сработало. поэтому я попробовал этот метод, и он работал. Так что разместите это так, чтобы это кому-нибудь помогло.

$(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

0 голосов
/ 30 октября 2018

Как получить количество десятичных знаков описано в нескольких местах, например, Самый простой способ получить количество десятичных знаков в числе в JavaScript Получить это число и проверить, в порядке или нет.

Одно замечание: вы проверяете, если input.val() < 101 Это включает 100.7 и не соответствует вашему требованию "между 0,00 и 100".

...