扩展jquery datepicker的beforeShow

时间:2014-04-17 07:40:23

标签: javascript jquery datepicker

如何扩展jQuery Datepicker'foreShow'功能?

我在尝试:

(function ($) {
    var old = $.fn.datepicker.beforeShow;
    $.fn.datepicker.beforeShow = function () {

        var ret = old.apply(this, arguments);
        alert("Extended functionality of beforeShow function!");



        return ret;
    };
})(jQuery);

更新

我想为我的所有日​​期选择器添加一些额外的功能,例如检查css类;我认为一个好的方法是扩展beforeShow方法的功能,而不是将功能放在每个地方。

1 个答案:

答案 0 :(得分:2)

如果您使用的是jQuery UI datepicker,请使用$.datepicker.setDefaults()方法。

E.g:

$.datepicker.setDefaults({
    beforeShow: function() {
        if($(this).hasClass('test')) {
            alert('got ya');   
        }

    }
});

DEMO

修改

根据你的评论,我将一个click事件监听器委托给datepicker元素。 否则,您将始终覆盖原始属性值。

$('.datepicker').on('click', function() {
    if($(this).hasClass('test')) {
        alert('got ya');   
    }   
});

$('.datepicker').datepicker({
    beforeShow: function () {
        //Still called?
        console.log('test');
    }
});

DEMO