DatePicker有一个内部函数_adjustDate()
,我想在后面添加一个回调函数。
当前方法
这就是我目前所做的。基本上,只需将函数定义替换为自身,加上新的操作。这会影响所有的日期选择器,我也不确定这是不是我们想要的。
$(function(){
var old = $.datepicker._adjustdate;
$.datepicker._adjustDate = function(){
old.apply(this, arguments);
// custom callback here
console.log('callback');
};
});
_adjustDate是指下个月/上个月的点击次数。该函数有三个参数。我很好奇是否有更好的方法来添加回调。
预期结果
我希望最终结果如下所示;其中afterAjustDate
是回调句柄:
$('#datepicker').datepicker({
showButtonPanel: true
, afterAdjustDate: function(){ $(this).find('foo').addClass('bar'); }
});
仅供参考
onChangeMonthYear
不是一个可接受的事件替代选项,live()
/delegate()
(在IE中不起作用)绑定选项也不是。
这是因为在选择月份之后需要应用类/操作元素。更改月份将在日历中重新创建元素;执行此操作时,jQueryUI不够智能,无法继承类更改。因此,在更改日期后,我需要一个回调。
发布于 2011-08-24 05:19:45
我写了一个小演示来做这件事。
我创建了一个包含$.datepicker扩展的对象文本,然后在$.datepicker和我的对象上执行$.extend。
你可以在这里查看:http://jsfiddle.net/NHN4g/4/
下面是扩展本身:
(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)
<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)
var changed = false;
$("#datepicker").datepicker({
afterAdjustDate: function(i,o,p){
if(!changed){
$('.ui-datepicker-month').css('color', '#f00');
}
changed = !changed;
}
});
发布于 2018-08-30 21:29:49
在DatepickerV1.0.0上,您可以使用pick
选项。
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);
}
});
发布于 2019-12-03 11:57:12
打开源码文件,你会看到有几个回调函数可以在default_options
中使用
onSelectDate: function () {},
onSelectTime: function () {},
onChangeMonth: function () {},
onGetWeekOfYear: function () {},
onChangeYear: function () {},
onChangeDateTime: function () {},
onShow: function () {},
onClose: function () {},
onGenerate: function () {},
https://stackoverflow.com/questions/4101287
复制相似问题