我有一个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");发布于 2013-07-22 22:40:27
您可以做很多事情,这取决于您的代码应该有多复杂。如果您只想检查(客户端)必填字段,请添加一个onSubmitEvent并查找属性为aria-required的字段。在这些控件中,您构建了一个显示,允许用户跳转到有问题的控件--空控件。
如果您宁愿进行服务器端验证,因为您不知道要验证的所有内容,那么可以使用onload脚本(提交会刷新页面)或在部分刷新后运行的脚本来查找aria-invalid属性。然后,您可以将列出跳转的列表或表呈现到所需的控件,因为在不同的窗格上可能有多个控件
我会将errormessages控件(显示服务器端验证错误的控件)放在始终可见的顶部窗格中(如果errormessages不为空,则始终如此)。
合乎道理?
https://stackoverflow.com/questions/17784680
复制相似问题