我有一个XPage,它分为几个Dojo内容窗格。我使用客户端JavaScript来决定显示哪个Dojo内容窗格。我现在想要为XPage添加几个必填字段的验证。但是,对于客户端和服务器端验证,将阻止文档保存,但如果需要验证的字段位于当前正在显示的Dojo内容窗格之外的Dojo内容窗格中,则用户无法查看服务器端错误消息和光标未放置在验证失败的字段中(客户端消息可见,但光标未放置在验证失败的字段中)。有没有什么办法可以在字段验证失败时添加要执行的CSJS代码? (理想情况下,我只想使用服务器端验证)
这是需要验证的字段
<xp:inputText id="FirstName" value="#{document1.FirstName}" required="true">
<xp:this.validators>
<xp:validateRequired>
<xp:this.message><![CDATA["REQUIRED"]]></xp:this.message>
</xp:validateRequired>
<xp:validateLength minimum="5" maximum="10">
<xp:this.message><![CDATA["VALIDATE"]]></xp:this.message>
</xp:validateLength>
</xp:this.validators>
</xp:inputText>
这里是Dojo内容窗格的代码
<xe:djContentPane id="Employee">
这里显示或隐藏Dojo内容窗格的CSJS代码
var Allgemein = dojo.byId("#{id:Allgemein}");
if (sectionDisplay == "Allgemein") {
dojo.style(Allgemein, "display", "block");
} else {
dojo.style(Allgemein, "display", "none");
}
var sectionDisplay = dojo.cookie("sectionDisplay");
答案 0 :(得分:2)
您可以执行许多操作,具体取决于您的代码应该是多么复杂。如果您只想检查(客户端)必填字段,请添加onSubmitEvent并查找以aria-required为属性的字段。在那些中,你构建一个显示,允许用户跳转到有问题的控件 - 空的控件。
如果您更愿意进行服务器端验证,因为您不知道要验证的内容,然后有一个onload脚本(提交刷新页面)或者在部分刷新后运行的脚本正在查找{ {3}}属性。然后,您可以渲染列表或表,列出跳转到所需的控件,因为您可能在不同的窗格上有多个
我会将错误消息控件(显示服务器端验证错误的控件)放在顶部的窗格中,该窗格始终可见(总是如下:如果错误消息不是空的话)。
有道理吗?