我想禁用Dojo Time Text Box控件的客户端验证,同时使其成为服务器端验证的必填字段。我已将“disableClientSideValidation”和“validatorExt”属性都设置为true。但是,当我打开XPage时,我立即在Dojo时间文本框旁边看到错误“此值是必需的”。这是我的代码:
<xe:djTimeTextBox id="EventStartTime" value="#document1.EventStartTime}" required="true"
disableClientSideValidation="true"
promptMessage="Bitte fügen Sie diesem Feld einen Wert hinzu!"
validatorExt="true">
<xe:this.validators>
<xp:validateRequired>
<xp:this.message><![CDATA[Bitte füllen Sie das Feld "Event Start Zeit" aus!]]>
</xp:this.message>
</xp:validateRequired>
</xe:this.validators>
</xe:djTimeTextBox>
答案 0 :(得分:3)
如果您将xe:djTimeTextBox
与属性required="true"
一起使用,则会创建一个html输出,如下所示:
<input name="view:_id1:EventStartTime" id="view:_id1:EventStartTime" required="true" promptmessage="Bitte fügen Sie diesem Feld einen Wert hinzu!" dojotype="dijit.form.TimeTextBox">
您可以在使用Firefox的noscript插件时查看此代码,并将其设置为禁用所有脚本。这是输出befor dojo正在转换dojo文本框中的输入。
问题是如果你使用这个extlib prebuild字段,如果禁用客户端验证,如果你将此字段设置为required
,那么required=true
属性将被写入输入。解决方法可能是使用标准输入并添加dojo属性,然后您可以像这样在服务器端设置所需:
<xp:this.resources>
<xp:dojoModule name="dijit.form.TimeTextBox"></xp:dojoModule>
</xp:this.resources>
<xp:inputText id="mtgTime1" style="width:160px;" role="button"
title="used to pick a meeting time" required="true"
dojoType="dijit.form.TimeTextBox" disableClientSideValidation="true">
<xp:this.dojoAttributes>
<xp:dojoAttribute name="required" value="false"></xp:dojoAttribute>
</xp:this.dojoAttributes>
<xp:this.validators>
<xp:validateRequired>
<xp:this.message><![CDATA[Bitte füllen Sie das Feld "Event Start Zeit" aus!]]></xp:this.message>
</xp:validateRequired>
</xp:this.validators>
</xp:inputText>
<xp:messages id="messages1"></xp:messages>
<xp:button id="test" value="tst">
<xp:eventHandler event="onclick" submit="true"
refreshMode="complete">
</xp:eventHandler></xp:button>