如何以编程方式更改Anytime datepicker的日期?

时间:2014-06-30 01:12:01

标签: jquery anytime

我已经修改了Stackoverflow上的所有Anytime datepicker Q / A无济于事。如何更改,不是在初始化阶段,选择器的日期?

使用案例:我希望用户有时会选择日期,但有时也需要外部事件来触发和更新选择器的当前值。

1 个答案:

答案 0 :(得分:0)

是否要更新选择器的值(换句话说,突出显示哪些按钮)或表单字段的值?如果是后者,那么您可以使用典型的JavaScript命令将字段设置为新值。用户下次单击该字段时,将根据值设置选择器。

唯一需要注意的是,您设置的值必须与您为选择器指定的格式相同。如果您使用JavaScript Date对象,则可以使用使用相同格式字符串初始化的新AnyTime.Converter()将其转换为正确的格式,并调用转换器的format()方法来转换Date 1}}成一个字符串。

例如:

var FMT = "%e-%b-%Y";
var conv = new AnyTime.Converter({format:FMT});
$("#field").AnyTime_picker({format:FMT});
...
var newVal = new Date(...);
$('#field').val( conv.format(newVal) );

如果您没有使用Date对象,只需100%确定您正确格式化了字符串!

现在,假设您确实想要更改选择器显示的内容(例如,您有一个placement:'inline'的选择器,并且您希望选择器反映字段中的新值:

在这种情况下,您必须在anytime.js中移动一行代码,并在JavaScript中再添加一行代码:

首先,在anytime.js的第84行附近,你应该找到:

var __pickers = [];

高出几行,你应该找到:

(function($)

将第二行移到第一行的上方,最后得到:

var __pickers = [];
(function($)

然后,在您自己的代码中,在将表单字段设置为新值后,请为表单字段的ID调用__pickers[ id ].showPkr()。例如,继续我最早的例子,添加以下最后一行:

__pickers['field'].showPkr();

当然,既然您已将__pickers []公开为全局变量,请确保您没有在其他地方使用相同名称用于其他目的,或者名称会发生​​冲突。