如何在jQuery datepicker中将服务器日期设置为当前日期

时间:2012-09-20 10:46:40

标签: jquery jquery-ui jquery-plugins jquery-ui-datepicker

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

defaultDate: myServerDate

...我也试过这个:

myDatepicker.datepicker('setDate', myServerDate);

两次尝试最终都会默认选择这些日期。但实际上并没有真正改变今天的日期。

干杯,腰带

1 个答案:

答案 0 :(得分: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的内部计算,并且会很复杂完成。