我正在使用日期文本框并且有几个问题。这是设计师 9,所以它使用 dojo 1.8 并不是说它应该有太大的不同。
设置最小/最大日期
我没有在设计师中看到这样做的方法。xe:djDateTimeConstraints 中没有任何匹配的内容,所以这是我需要通过 javascript 执行的操作吗?我在下面有一个示例,一旦选择了 StartDate,就会更改 EndDate 控件,但没有看到设置 StartDate 的方法,而不是 beforeRenderResponse 或类似的方法。
可选日期
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>