我有一个带有2个Dojo Time文本框的XPage。在提交之前,我想检查开始时间是否早于结束时间。使用“>”时运算符在大多数情况下工作,如果开始日期在小时值中有两位数且结束日期只有一位数(使用AM和PM显示的次数),则它不起作用。这是我的代码:
<xe:djTimeTextBox id="EventStartTime" value="#{document1.EventStartTime}" />
<xe:djTimeTextBox id="EventEndTime" value="#{document1.EventEndTime}" />
var startD = "#{id:EventStartTime}";
var endD = "#{id:EventEndTime}";
var startVal = dojo.attr(startD,"value");
var endVal = dojo.attr(endD,"value");
if (startVal > endVal) {alert("Start later than End!");return false;};
例如,如果“开始时间”是上午10:15,“结束时间”是上午9:30,则此比较将不起作用。
答案 0 :(得分:1)
我经常不得不使用日期/时间框来为用户选择会议,事件或其他具有持续时间的事情,其中不允许开始时间晚于结束时间。对于那些我使用此代码的人:
<xp:this.resources>
<xp:dojoModule name="dijit.form.TimeTextBox"></xp:dojoModule>
</xp:this.resources>
Start Time:
<xp:inputText id="mtgTime1" style="width:160px;" role="button"
title="used to pick a meeting time" required="true"
dojoType="dijit.form.TimeTextBox">
<xp:this.dojoAttributes>
<xp:dojoAttribute name="onChange">
<xp:this.value><![CDATA[#{javascript:return "dijit.byId('"+getClientId('mtgTime2')+ "').constraints.min = arguments[0];"}]]></xp:this.value>
</xp:dojoAttribute>
</xp:this.dojoAttributes>
</xp:inputText>
<br></br>
End Time:
<xp:inputText id="mtgTime2" style="width:160px;" role="button"
dojoType="dijit.form.TimeTextBox">
<xp:this.dojoAttributes>
<xp:dojoAttribute name="onChange">
<xp:this.value><![CDATA[#{javascript:return "dijit.byId('"+getClientId('mtgTime1')+"').constraints.max = arguments[0];"}]]></xp:this.value>
</xp:dojoAttribute>
</xp:this.dojoAttributes>
</xp:inputText>
这将创建两个dojo TimeBoxes mtgTime1
和mtgTime2
两个都有一个下拉列表,让用户选择时间值,但如果选择第一个,则不允许将secound设置为a使用dojo function contraints.min
和contraints.max
确定更高的价值。
有关更多信息,请查看dijit.form.TimeTextBox。
这种验证也适用于DateTimeBox。
更新:不要忘记设置dojoForm="true" dojoTheme="true" dojoParseOnLoad="true"
。