0

kendoValidator の必須ルールに追加したいと考えています。同じように機能することを望みますが、1 つの例外があります。残念ながら、ルール セクションで関数を提供すると、必要な関数のすべてのロジックを再度コーディングする必要があります。

「必須」ルールの既存の機能をピギーバックする方法があるかどうか疑問に思っています。現在、以下のコードには、値が含まれている場合でも、無効になっていない必須とマークされているすべてが含まれています。

    function runValidation() {
        $(".dateTimePickerField").each(function () {
            var validator = $(this).kendoValidator({
                rules: {
                    required: function (e) {
                        if ($(e).is(':disabled'))
                        {
                            return true;
                        }
                    },
                    dateValidation: function (e) {
                        var dateTime = $(e).val();
                        var currentDate = Date.parse($(e).val());
                        if (dateTime.length > 0 && !currentDate) {
                            return false;
                        }
                        return true;
                    }
                },
                messages: {
                    //Define your custom validation massages
                    required: "datetime required",
                    dateValidation: "Invalid datetime"
                }
            }).data("kendoValidator");

            validator.validate();
        });
    }
4

1 に答える 1

1

必要なルールに必要なロジックをコーディングすることになりました。コード化するのはそれほど難しいルールではなかったので、私はそれをしました。

   function runValidation() {
        var boolval = true;
        $("input.dateTimePickerField").each(function () {
            var validator = $(this).kendoValidator({
                rules: {
                    required: function (e) {
                        if ($(e).prop('required')) {
                            if ($(e).is(':disabled') || $(e).val().length > 0) {
                                return true;
                            }
                            return false;
                        }
                        return true;
                    },
                    dateValidation: function (e) {
                        var dateTime = $(e).val();
                        var currentDate = Date.parse($(e).val());
                        if (dateTime.length > 0 && !currentDate) {
                            return false;
                        }
                        return true;
                    },
                    customEventDateValidation: function (e) {
                        var dateTime = $(e).val();
                        var currentDate = Date.parse($(e).val());

                        var row = $(e).closest('tr');
                        var startDateText = row.find(".startDate").text();
                        var eventStartDate = Date.parse(startDateText);

                        if (currentDate && eventStartDate)
                        {
                            if(currentDate > eventStartDate)
                            {
                                return false;
                            }
                        }
                        return true;
                    },
                    customTicketStartDateValidation: function (e) {
                        if ($(e).hasClass("ticketStartDate"))
                        {
                            var dateTime = $(e).val();
                            var currentDate = Date.parse($(e).val());
                            var row = $(e).closest('tr');
                            var ticketEndDateText = row.find("input.ticketEndDate").val();
                            var ticketEndDate = Date.parse(ticketEndDateText);
                            if(currentDate && ticketEndDate)
                            {
                                if(currentDate > ticketEndDate)
                                {
                                    return false;
                                }
                            }
                        }
                        return true;
                    },
                    customTicketEndDateValidation: function (e) {
                        if ($(e).hasClass("ticketEndDate")) {
                            var dateTime = $(e).val();
                            var currentDate = Date.parse($(e).val());
                            var row = $(e).closest('tr');
                            var ticketStartDateText = row.find("input.ticketStartDate").val();
                            var ticketStartDate = Date.parse(ticketStartDateText);
                            if (currentDate && ticketStartDate) {
                                if (currentDate < ticketStartDate) {
                                    return false;
                                }
                            }
                        }
                        return true;
                    }
                },
                messages: {
                    required: "Datetime required",
                    dateValidation: "Invalid datetime",
                    customEventDateValidation: "Datetime must be before event date",
                    customTicketStartDateValidation: "Ticket start datetime must be before ticket end datetime",
                    customTicketEndDateValidation: "Ticket end datetime must be after ticket start datetime"
                }
            }).data("kendoValidator");

            if (!validator.validate()) {
                boolval = false;
            }
        });
        return boolval;
    }
于 2014-07-03T20:27:01.847 に答える