javascript - 如何调用 javascript 扩展(重写?)函数?

标签 javascript jquery

我正在尝试扩展 kendo.ui.validator (类似于 jQuery 验证器) 我正在重写日期函数,但我应该使用相同的逻辑重载 mvcdate 函数。重写的日期函​​数被调用并正确运行。

我不想复制和粘贴,因此尝试从 mvcdata 覆盖调用覆盖的数据函数,但没有成功。语法是 this.rules.date(input) 我完全是 javascript OOP 部分的初学者,所以我不知道我在做什么,尽管我的语法似乎是合理的。我错过了什么?

(function ($, kendo) {
    $.extend(true, kendo.ui.validator, {
        rules: {
            date: function (input) {
                if (input.is("[data-val-date]")) {
                    var value = input.val();
                    var check = false;
                    //var m = moment(value.toString(), "YYYY-MM-DD HH:mm:ss", true);
                    var m = moment(value.toString(), defaultJavaScriptDateFormat, true);
                    check = m.isValid();
                    //var message = "";
                    //if (!check) {
                    //    message = "Invalid " + m.invalidAt() + ". Please enter a correct date";
                    //}
                    //input.attr("data-val-date", message);
                    return !input.is("[data-val-required]") || check;
                }
                return true;
            },
            mvcdate: function (input) {
                // Here I try to call the overrided date function to prevent copy and paste, this cause runtime error in chrome:
                return this.rules.date(input);
            }
        },
        messages: {
            date: function (input) {
                return input.attr("data-val-date");
            }
        }
    });
})(jQuery, kendo);

最佳答案

您可以使用直接方法调用来访问您的函数:

mvcdate: function (input) {
    return kendo.ui.validator.rules.date.call(this, input);
}

如果kendo.ui.validator是使用new关键字创建的对象的实例,并且您的date函数是您的原型(prototype)的一部分可以使用原型(prototype)来调用它:

mvcdate: function (input) {
    return kendo.ui.validator.prototype.rules.date.call(this, input);
}  

关于javascript - 如何调用 javascript 扩展(重写?)函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30192655/

相关文章:

javascript - 删除javascript中的div

javascript - 选择下拉列表中的某些值时取消选中复选框

javascript - 如何在主页后显示图像

javascript - 如何在重定向页面中包含谷歌分析?

javascript - 仅在第一次使用 jQuery 时分离事件

当从 cookie 中警告加密字符串时,Javascript + 字符被删除

jquery - $这个:eq(2) is not working in a plugin

javascript - 基于日期数据的 Amcharts 图例标题

javascript - 没有浏览器的javascript中的GUI应用程序?

javascript - 如何使用 !importanat 使用 JavaScript/jQuery 设置可变宽度