【问题标题】:jQuery datepicker - How to change "today" date? [duplicate]jQuery datepicker - 如何更改“今天”日期? [复制]
【发布时间】:2010-03-25 14:14:02
【问题描述】:

有没有办法更改 jquery.ui datepicker 中的“今天”日期? 今天,我的意思是今天 (class="ui-datepicker-today"),而不是 minDate 或当前选择的日期!

我发现,datepicker 使用系统时间作为默认值。现在我从我的服务器获取当前日期并将其设置为我的 minDate。但是我没有找到设置今天日期的方法... 它仍然使用我的系统日期(有些用户的系统日期在 2000 年或更早)。

你能帮帮我吗?

【问题讨论】:

  • 你得到答案了吗??如果是,请发布代码。

标签: javascript jquery datepicker


【解决方案1】:

基于source,看起来不太好。

var today = new Date();

这始终是用户的系统日期。

如果您绝对必须解决此问题,请向下看一行;您可以覆盖 $.datepicker._daylightSavingAdjust 并从您的服务器返回日期 *

但这是个坏主意。为什么您的用户的系统日期如此混乱?为什么这是你的问题?如果他们抱怨,请告诉他们修好时钟。

* 我无法强调这是多么糟糕的想法。该函数用于规范化日期选择器中的大多数日期,因此您必须编写一些非常复杂的逻辑来避免将所有内容弄乱。这甚至可能都不可行。

【讨论】:

  • 为什么你的用户的系统日期这么乱? --> 好吧,我不知道!我收到一个用户的请求,他/她不能使用我的网站,原因是日期选择器中的日期限制为 2000 和 2001(未来一年为期限,用户可以选择日期)。
【解决方案2】:

jQuery UI DatePicker change highlighted "today" date中选定答案的小调整

// Get users 'today' date
var localToday = new Date();
localToday.setDate(tomorrow.getDate()+1); // tomorrow

// Pass the today date to datepicker
$( "#datepicker" ).datepicker({
    showButtonPanel: true,
    localToday: localToday    // This option determines the highlighted today date
});

我已经覆盖了 2 个日期选择器方法,以有条件地为“今天”日期使用新设置,而不是 new Date()。新设置称为localToday

像这样覆盖 $.datepicker._gotoToday$.datepicker._generateHTML

$.datepicker._gotoToday = function(id) {
    /* ... */
    var date = inst.settings.localToday || new Date()
    /* ... */
}

$.datepicker._generateHTML = function(inst) {
    /* ... */
    tempDate = inst.settings.localToday || new Date()
    /* ... */
}

这是一个demo,它显示了完整的代码和用法:http://jsfiddle.net/NAzz7/5/

【讨论】:

    【解决方案3】:

    您是否希望设置打开jQuery UI Datepicker 的默认日期?

    如果是这样,日期选择器有一个 option 允许您设置它。

    【讨论】:

    • 不,默认日期是启动时选择的日期,但我正在寻找今天的日期。
    • 这种特殊风格的答案应该是评论。我很想买一面旗帜……对不起!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-24
    • 1970-01-01
    • 2012-04-14
    • 2017-08-21
    相关资源
    最近更新 更多