单击按钮更改 dijit 日期文本框的日期模式

change datePattern of dijit date textbox on button click

我可以动态更改 Dijit DateTextBox 的某些约束,但是当我尝试更改 datePattern 时,它就不起作用了。例如:

var theDateWidget = dijit.byId(/*RefToDateTextBox*/);

theDateWidget.constraints.max = new Date(); // works fine... :)

theDateWidget.constraints.datePattern = "yyyy"; // does not work, it also harms the DateTimeTextBox widget,  I cannot select any value from drop down anymore

我首先在创建时将 datePattern = "dd/MM/yyyy" 设置为小部件,然后在代码中我决定将该模式更改为 "yyyy"

任何人都知道如何动态更改 DateTextBox 小部件的 datePattern,例如单击按钮。

要更新小部件的约束,您应该设置其 'constraints' 属性。假设您只想更新日期模式而不影响其他约束,您会这样做:

var constraints = theDateWidget.get('constraints');
constraints.datePattern = 'yyyy';
theDateWidget.set('constraints', constraints);

这样做比直接修改小部件属性的内部更安全,因为小部件在更新其属性时通常需要采取额外的步骤。

另请注意,datePattern 用于解析输入值和格式化小部件的值以供显示。如果它设置为不完整的模式,例如 "yyyy",小部件的功能将受到严重限制(它只能理解年份值,而不是完整的日期)。