0

我使用 jQuery 插件 datepicker,我不希望用户能够更改他的客户端上的今天日期。所以我想知道如何将今天日期(不是选定的日期!)设置为我的服务器日期。下面的代码即只设置默认的“SELECTED”日期值

defaultDate: myServerDate

...我也试过这个:

myDatepicker.datepicker('setDate', myServerDate);

默认情况下,这两种尝试最终都选择了这些日期。但实际上并没有真正改变今天的日期。

干杯,腰带

4

1 回答 1

1

从外观上看,如果不进行黑客攻击,这是不可能jquery.ui.datepicker.js的,以下是该文件的非缩小版本的摘录:

/* Generate the HTML for the current state of the date picker. */
_generateHTML: function(inst) {
  var today = new Date();
  today = this._daylightSavingAdjust(
    new Date(today.getFullYear(), today.getMonth(), today.getDate())); // clear time

从上面可以看出,它today是直接从 JavaScript 的 Date 对象计算出来的,所以没有办法将这个值传递进去……我猜主要是因为改变当前日期是一个很奇怪的请求。

有四个灵魂提示,其中 3 个不是很好,我已将它们按顺序排列,1 是最好的,4 是最差/最复杂的:

  1. 您可以参与并实施/报告setToday自己的功能 - http://bugs.jqueryui.com/

  2. 您可以将 _generateHTML 函数复制到您自己的代码中,并使用 RodrigoCouto 所述的方法对其进行扩展: jQuery DatePicker Issue: Set current date

  3. 您可以破解jquery.ui.datepicker.js以允许您定义一个日期来代替代码var today = new Date();。您应该在应用程序中的任何注释中清楚地记下此覆盖,以便在需要升级到下一个 jQuery UI 版本时警告自己(和其他开发人员)。

  4. 您可以构建一个 js hack 与 datepicker 插件一起运行,并在每次显示日历时重写它的输出。即检测$('.ui-datepicker-today')并删除该类,然后通过沿着兄弟姐妹步进并检查数据属性来重新计算它应该放置的位置......这是最糟糕的方法,因为它不会影响任何 datepicker 的内部计算并且完成起来会很复杂。

于 2012-09-20T11:27:44.733 回答