日付のテキスト ボックスを使用していますが、いくつか質問がありました。これはデザイナー 9 の場合であるため、dojo 1.8 を使用してもそれほど大きな違いはありません。
最小/最大日付の設定
デザイナーでこれを行う方法がわかりません。xe:djDateTimeConstraints に一致するものは何もないので、これは javascript で行う必要がありますか? StartDate が選択されると EndDate コントロールを変更する例を以下に示しますが、BeforeRenderResponse など以外に StartDate を設定する方法はありませんでした。
選べる日程
http://dojotoolkit.org/reference-guide/1.8/dijit/form/DateTextBox.html 「最小、最大、有効な曜日など、開発者が提供する制約に対しても検証します。」
有効な曜日 - 選択可能な曜日だけに設定したいのですが、例がなく、リンクが曜日制約のあるページに移動しません。どの用語を検索すればよいですか? 以下の例ではバリデーターを使用していますが、日付テキスト ボックスで週末を選択できないようにできるかどうかはわかりませんでした。
これが私のコントロールの例です-開始日が設定されると、終了日の制約が変更されます
<xp:label value="Start Date" id="lblStartDate"></xp:label>
<xe:djDateTextBox id="djDateStart">
<xe:this.constraints>
<xe:djDateTimeConstraints datePattern="M/dd/yyyy"></xe:djDateTimeConstraints>
</xe:this.constraints>
<xp:eventHandler event="onChange" submit="false">
<xe:this.script><![CDATA[
var startDateID = "#{id:djDateStart}";
var endDateID = "#{id:djDateEnd}";
var hiddenEndDateID = "#{id:hiddenEndDate}";
require(["dojo/date/locale"], function(locale){
var x = new Date (dojo.byId(startDateID).value);
// Fails if current date is the weekend or empty
if(locale.isWeekend(x) || dojo.byId(startDateID).value == "") {
dojo.style(hiddenEndDateID, "display", "none");
dojo.byId(endDateID).value = "";
dojo.byId(startDateID).value = "";
dijit.byId(startDateID).displayMessage("dates must be weekdays");
} else {
// Set display value and constraint for End Date
dojo.byId(endDateID).value = dojo.byId(startDateID).value;
dijit.byId(endDateID).constraints.min = arguments[0];
dijit.byId(endDateID).constraints.max = dojo.date.add(arguments[0], "week", 3);
// Make End Date and Comment visible.
dojo.style(hiddenEndDateID, "display", "inline");
}
})
]]></xe:this.script>
</xp:eventHandler>
</xe:djDateTextBox>