繁体   English   中英

如何以编程方式更改随时日期选择器的日期?

[英]How do I change programmatically the date of an Anytime datepicker?

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

用例:我有时希望用户选择一个日期,但有时又希望一个外部事件来触发和更新选择器的当前值。

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

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

例如:

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'的选择器placement:'inline'并且您希望该选择器在字段中反映新值):

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

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

var __pickers = [];

高出几行,您应该找到:

(function($)

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

var __pickers = [];
(function($)

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

__pickers['field'].showPkr();

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM