Jquery ui 在';今天';jquery ui数据采集器中的按钮
我使用的是日期选择器表单jQuery-ui-1.8.16 我有以下代码:Jquery ui 在';今天';jquery ui数据采集器中的按钮,jquery-ui,jquery-ui-datepicker,Jquery Ui,Jquery Ui Datepicker,我使用的是日期选择器表单jQuery-ui-1.8.16 我有以下代码: Site.Calendar = function() { // Set default setting for all calendars jQuery.datepicker.setDefaults({ showOn : 'both', buttonImageOnly : true, buttonText: '', changeMonth :
Site.Calendar = function() {
// Set default setting for all calendars
jQuery.datepicker.setDefaults({
showOn : 'both',
buttonImageOnly : true,
buttonText: '',
changeMonth : true,
changeYear : true,
showOtherMonths : true,
selectOtherMonths : true,
showButtonPanel : true,
dateFormat : "D, d M, yy",
showAnim : "slideDown",
onSelect: Site.Calendar.customiseTodayButton
});
};
Site.Calendar.customiseTodayButton = function(dateText, inst) {
console.log("hello");
};
我的customiseTodayButton函数仅在我选择实际日期时触发,而不是在“今天”按钮上触发
有没有办法覆盖jQuery日期选择器中的“今天”按钮的工作方式
谢谢单击“今日”按钮时没有标准事件。但是,看看jquery.ui.datepicker.js代码,它似乎调用了
$.datepicker.\u gotoday
。我将通过customizeTodayButton
假设您正在尝试更改它当前的行为(不是外观,外观将通过样式来完成)。要改变现有的行为,最好知道它现在做什么。请记住,这是所用函数的当前代码:
/* Action for current link. */
_gotoToday: function(id) {
var target = $(id);
var inst = this._getInst(target[0]);
if (this._get(inst, 'gotoCurrent') && inst.currentDay) {
inst.selectedDay = inst.currentDay;
inst.drawMonth = inst.selectedMonth = inst.currentMonth;
inst.drawYear = inst.selectedYear = inst.currentYear;
}
else {
var date = new Date();
inst.selectedDay = date.getDate();
inst.drawMonth = inst.selectedMonth = date.getMonth();
inst.drawYear = inst.selectedYear = date.getFullYear();
}
this._notifyChange(inst);
this._adjustDate(target);
},
要使用自己的功能覆盖此函数,您需要将代码更新为以下内容:
Site.Calendar = function() {
//override the existing _goToToday functionality
$.datepicker._gotoTodayOriginal = $.datepicker._gotoToday;
$.datepicker._gotoToday = function(id) {
// now, call the original handler
$.datepicker._gotoTodayOriginal.apply(this, [id]);
// invoke selectDate to select the current date and close datepicker.
$.datepicker._selectDate.apply(this, [id]);
};
// Set default setting for all calendars
jQuery.datepicker.setDefaults({
showOn: 'both',
buttonImageOnly: true,
buttonText: '',
changeMonth: true,
changeYear: true,
showOtherMonths: true,
selectOtherMonths: true,
showButtonPanel: true,
dateFormat: "D, d M, yy",
showAnim: "slideDown"
});
};
此外,这里还有一份您正在寻找的作品。我在这里找到了以下内容: 它只需重写GoToDay方法并添加两行新行:
this._setDateDatepicker(target, date);
this._selectDate(id, this._getDateDatepicker(target));
也许有一种更干净的方法可以用你原来的答案来解决这个问题?我用这种方法实现了今天按钮的覆盖:
jQuery.datepicker._gotoToday = function(id) {
var today = new Date();
var dateRef = jQuery("<td><a>" + today.getDate() + "</a></td>");
this._selectDay(id, today.getMonth(), today.getFullYear(), dateRef);
};
jQuery.datepicker.\u gotoday=function(id){
var today=新日期();
var dateRef=jQuery(“+today.getDate()+”);
这。\您选择Day(id,today.getMonth(),today.getFullYear(),dateRef);
};
这非常简单,并且实现了我想要的“选择日期并关闭日期选择器”功能。谢谢Mark。我想使“今天”按钮的行为类似于“日期”按钮,即选择“今天”按钮会将输入字段更新为“今天日期”,并关闭日历。我应该能够根据您的回答来找出答案:)所以这段代码无法正常工作,我忘记了datepicker实际上并不像其他ui组件那样使用ui小部件类。现在更新答案,并添加您想要的内容。嗨,马克。不幸的是,它在IE中不起作用:(当选择“今天”按钮时,日历似乎很快关闭和重新打开。有什么想法吗?我找到了一个可以跨所有主要浏览器(IE、Chrome、Firefox)工作的解决方案)…请看我在这条线索中的新帖子我想你想说的是“今天”。getDay()在td中
jQuery.datepicker._gotoToday = function(id) {
var today = new Date();
var dateRef = jQuery("<td><a>" + today.getDate() + "</a></td>");
this._selectDay(id, today.getMonth(), today.getFullYear(), dateRef);
};