2013-07-17 1 views
1

Мы используем dojo DateTextbox в наших приложениях. Ранее он отображал локальный формат mm/dd/yyyyКак определить глобальный datepattern для DateTextbox в dojo 1.6

Теперь конечный пользователь нуждается в том же формате 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'}" /> 

Но у нас есть много DateTextBoxs в нашем проекте. Добавление атрибута ограничений во всем текстовом поле было бы утомительной работой.

Есть ли какие-либо определения, которые мы можем определить по всему миру, чтобы он занимался всеми текстовыми полями?

благодаря

ответ

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, вы можете использовать this example.


EDIT: Я только что заметил, что вы используете Dojo 1.6. Код не будет работать, но идея такая же, просто расширьте свой виджет, и он будет работать.

EDIT 2: This code может работать с Dojo 1.6.

0

Несколько альтернатив

  • расширить класс Dijit и добавить набор ограничений по умолчанию.
  • создать объект для ограничения

Примером может служить:

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

Затем, когда вы объявляете окно есть:

constraints: myConstraints 
+0

Спасибо, В этом случае тоже мне нужно установить атрибуты ограничений во всех файлах DateTextBox. Я хочу этого избежать. Хотите объявить его глобально, чтобы все DateTextBoxes наследовали это. – codpursue