首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >向jQuery DatePicker添加回调的正确方法

向jQuery DatePicker添加回调的正确方法
EN

Stack Overflow用户
提问于 2010-11-05 04:54:47
回答 3查看 30.1K关注 0票数 18

DatePicker有一个内部函数_adjustDate(),我想在后面添加一个回调函数。

当前方法

这就是我目前所做的。基本上,只需将函数定义替换为自身,加上新的操作。这会影响所有的日期选择器,我也不确定这是不是我们想要的。

代码语言:javascript
复制
$(function(){

   var old = $.datepicker._adjustdate;

   $.datepicker._adjustDate = function(){
      old.apply(this, arguments);

      // custom callback here     
      console.log('callback');
   };

});

_adjustDate是指下个月/上个月的点击次数。该函数有三个参数。我很好奇是否有更好的方法来添加回调。

预期结果

我希望最终结果如下所示;其中afterAjustDate是回调句柄:

代码语言:javascript
复制
$('#datepicker').datepicker({ 
       showButtonPanel: true
     , afterAdjustDate: function(){ $(this).find('foo').addClass('bar'); }
});

仅供参考

onChangeMonthYear不是一个可接受的事件替代选项,live()/delegate() (在IE中不起作用)绑定选项也不是。

这是因为在选择月份之后需要应用类/操作元素。更改月份将在日历中重新创建元素;执行此操作时,jQueryUI不够智能,无法继承类更改。因此,在更改日期后,我需要一个回调。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-08-24 05:19:45

我写了一个小演示来做这件事。

我创建了一个包含$.datepicker扩展的对象文本,然后在$.datepicker和我的对象上执行$.extend。

你可以在这里查看:http://jsfiddle.net/NHN4g/4/

下面是扩展本身:

代码语言:javascript
复制
(function($){
    var datepickerExtensions = {
        _oldAdjustDate: $.datepicker._adjustDate,
        _adjustDate: function(id, offset, period) { 
            var target = $(id);
            var inst = this._getInst(target[0]);
            var afterAdjustDate = this._get(inst, 'afterAdjustDate');
            this._oldAdjustDate(id, offset, period);
            if(afterAdjustDate && typeof afterAdjustDate === 'function'){
                afterAdjustDate(id, offset, period);
            }
        }
    }
    $.extend($.datepicker, datepickerExtensions);
})(jQuery);

和演示:

(html)

代码语言:javascript
复制
<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/themes/base/jquery-ui.css" type="text/css" media="all">
<div class="demo">
    <p>Date: <input type="text" id="datepicker"></p>
</div><!-- End demo -->

(javascript)

代码语言:javascript
复制
var changed = false;
$("#datepicker").datepicker({ 
    afterAdjustDate: function(i,o,p){
        if(!changed){
            $('.ui-datepicker-month').css('color', '#f00');
        }
        changed = !changed;
    }
});
票数 17
EN

Stack Overflow用户

发布于 2018-08-30 21:29:49

在DatepickerV1.0.0上,您可以使用pick选项。

代码语言:javascript
复制
    var date = new Date();
    $('.datepicker-trigger').datepicker({
        format: 'mm/dd/yyyy',
        autoPick: false,
        startDate: date.getDate(),
        changeMonth: false,
        changeYear: false,
        autoHide: true,
        pick: function (selectedDate) {
            console.log(selectedDate);
        }
    });
票数 0
EN

Stack Overflow用户

发布于 2019-12-03 11:57:12

打开源码文件,你会看到有几个回调函数可以在default_options中使用

代码语言:javascript
复制
        onSelectDate: function () {},
        onSelectTime: function () {},
        onChangeMonth: function () {},
        onGetWeekOfYear: function () {},
        onChangeYear: function () {},
        onChangeDateTime: function () {},
        onShow: function () {},
        onClose: function () {},
        onGenerate: function () {},
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4101287

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档