0

我有一个 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");
4

1 回答 1

2

你可以做很多事情,这取决于你的代码应该有多复杂。如果您只想检查(客户端)必填字段,请添加 onSubmitEvent 并查找具有aria-required作为属性的字段。在这些中,您构建了一个显示,允许用户跳转到有问题的控件 - 空的控件。

如果您宁愿进行服务器端验证,因为您不知道要验证的所有内容,请使用 onload 脚本(提交刷新页面)或在部分刷新后运行以查找aria-invalid属性。然后,您可以呈现列表或表格列表跳转到所需的控件,因为您可能在不同的窗格中有多个

我会将错误消息控件(显示服务器端验证错误的控件)放在始终可见的顶部窗格中(始终如:如果错误消息不为空)。

说得通?

于 2013-07-22T14:40:27.363 回答