1

環境: Dojo.1.8.4

DateTextBox に有効な日付が含まれていない場合、過去の日付 (生年月日入力ボックス) でカレンダー ポップアップを開始したいと考えています。これを達成する最善の方法は何ですか?

<div maxlength="12" 
    data-dojo-type="dijit/form/DateTextBox" 
    data-dojo-props="required: true, constraints:{min:'1880-01-01', 
        max: new Date()}, popupClass: 'dojox.widget.Calendar'">
</div>

ポップアップのコンストラクターがそれを取得して使用できるように、「startDate」パラメーターなどを上記に配置できるようにしたいと考えています。

dojox.widget._CalendarBaseコンストラクターで日付を現在の日付に設定するように見えます。(実際には、コンストラクターと宣言の両方で設定しているようです)。

4

3 に答える 3

1

dropDownDefaultValue1 つの解決策は、標準のカレンダーで機能する setです。

var dt = new DateTextBox({dropDownDefaultValue: new Date( 1950,1,1)},
     dom.byId('dtText'));

dropDownDefaultValuecurrentFocusポップアップによっての形式でカレンダーに渡されます。残念ながら、それを行うためにクラスを拡張するか、上記のアスペクトメソッドを使用するかをdojox.widget.Calendar認識していません。currentFocus

于 2013-07-16T14:31:33.590 に答える
0

currentFocusこれは、ポップアップによって渡されたものを受け入れるために dojox.widget.Calendar を拡張する方法です。上記の方法と同様にaspect、値が親の DateTextBox に配置されないようにするために、onChange を一時的に無効にします。

define([
    "dojo/_base/declare",
     "dojox/widget/Calendar"
], function(declare, calendar){
    return declare("my.dijit.Calendar", [calendar], {
        postCreate: function() {
            this.inherited(arguments);

            var oldOnChange = this.onChange;
            this.onChange = function(){}; 

            this.set('value', this.parseInitialValue( this.currentFocus));

            this.onChange = oldOnChange;
       }
   });
});
于 2013-07-16T15:59:47.900 に答える