1

我们在应用程序中使用 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。在所有文本字段中添加约束属性将是一项繁琐的工作。

有没有我们可以全局定义它以便处理所有文本字段?

谢谢

4

2 回答 2

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,你就不能。

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

我还在JSFiddle做了一个完整的例子,如果你想使用dijit/form/DateTextBox你可以使用这个例子


编辑:我刚刚注意到您使用的是 Dojo 1.6。代码不起作用,但想法是一样的,只需扩展您的小部件,它就会起作用。

编辑 2此代码可能适用于 Dojo 1.6。

于 2013-07-17T09:04:15.583 回答
0

有几个选择是

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

一个例子是:

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

然后,当您声明一个框时:

constraints: myConstraints
于 2013-07-17T08:12:34.387 回答