如何在dojo 1.6中为DateTextbox定义全局日期模式

时间:2013-07-17 07:13:57

标签: dojo dijit.form

我们在应用程序中使用dojo DateTextbox。之前它显示的是本地格式mm / dd / yyyy

现在最终用户需要dd-MMM-yyyy格式。下面的代码将照顾单个文本框。

<input id="startDate" name="startDate" size="10" value="${fromdate }"
 dojoType="dijit.form.DateTextBox" required="true"  
 constraints="{min:'08/22/2008',datePattern : 'dd-MMM-yyyy'}"   />

但是我们的项目中有很多DateTextBox。在所有文本字段中添加约束属性将是繁琐的工作。

我们是否可以在全球范围内对其进行定义,以便处理所有文本字段?

谢谢

2 个答案:

答案 0 :(得分:2)

这样做的正确方法是从DateTextBox扩展并定义约束。 例如:

declare("CustomDateTextBox", [DateTextBox], {
    postCreate: function() {
        this.inherited(arguments);
        this.set('constraints', {
            min: '08/22/2008',
            max: new Date(),
            datePattern: 'dd-MMM-yyyy'
        });
    }
});

此举意味着您需要使用CustomDateTextBox代替DateTextBox。如果你真的想使用dijit/form/DateTextBox,你可以定义名称dijit/form/DateTextBox,但我不推荐它,因为如果你也需要默认的DateTextBox,你就不能。< / p>

this.inherited(arguments)也非常重要,因为它会运行超级调用,这意味着也会调用默认的postCreate(没有它,你的小部件将无效)。

我还在JSFiddle做了一个完整的示例,如果您想使用dijit/form/DateTextBox,可以使用this example


编辑:我刚刚注意到你正在使用Dojo 1.6。代码将不起作用,但想法是相同的,只需扩展您的小部件,它将工作。

编辑2 This code可能适用于Dojo 1.6。

答案 1 :(得分:0)

有几种选择

  • 扩展dijit类并添加一组默认约束。
  • 为约束
  • 创建一个对象

一个例子是:

var myConstraints = {
   min: new Date( 1950, 2, 10),
   max: new Date(),
   datePattern : 'dd-MMM-yyyy'
   };

然后当你声明一个方框时:

constraints: myConstraints