XPages - 比较两个Dojo时间文本框中的值

时间:2013-11-28 13:20:10

标签: javascript dojo xpages lotus-notes

我有一个带有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,则此比较将不起作用。

1 个答案:

答案 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 mtgTime1mtgTime2两个都有一个下拉列表,让用户选择时间值,但如果选择第一个,则不允许将secound设置为a使用dojo function contraints.mincontraints.max确定更高的价值。

有关更多信息,请查看dijit.form.TimeTextBox

这种验证也适用于DateTimeBox。

更新:不要忘记设置dojoForm="true" dojoTheme="true" dojoParseOnLoad="true"