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 があります。すべてのテキストフィールドに Constraints 属性を追加するのは面倒な作業です。

すべてのテキストフィールドを処理するようにグローバルに定義できるものはありますか?

ありがとう

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 を使用していることに気付きました。コードは機能しませんが、アイデアは同じです。ウィジェットを拡張するだけで機能します。

EDIT 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 に答える