我不知道是否在过去的文章中对此进行了讨论,但是我找不到类似的内容,所以我的问题在这里:我在自定义控件上有14个字段。现在,在工作流程中的特定条件下,我需要确保前6个字段是必需的(可以通过使用所需的验证器来完成),并且在其他8个字段中,应强制用户至少输入2个字段。我怎样才能做到这一点?我正在将属性“ disableClientSideValidation”设置为true的所有字段使用服务器端验证。我不确定是否可以在这种情况下使用自定义验证器,如果是,那么如何?
就您而言,您可以使用validateExpression
。那里的SSJS代码必须返回true或false。在代码中,您可以使用来访问其他字段,getComponent("otherFieldName").getSubmittedValue()
并以此方式测试填充了多少个字段。如果为0或1,则返回false,否则返回true。
在validateExpression
被执行只有当字段不为空。因此,将validationExpression添加到您的前6个必填字段之一,并将其validateRequired
也添加到其中。
例子:
<xp:inputText
id="inputRequired1"
value="#{...}"
disableClientSideValidation="true">
<xp:this.validators>
<xp:validateRequired message="field is required"></xp:validateRequired>
<xp:validateExpression message="please, fill at least two fields">
<xp:this.expression><![CDATA[#{javascript:
num = 0;
for (i = 1; i <= 8; i++) {
if (getComponent("inputText" + i).getSubmittedValue() !== "") {
num++;
}
}
if (num < 2) {
return false;
}
return true}]]></xp:this.expression>
</xp:validateExpression>
</xp:this.validators>
</xp:inputText>
<xp:inputText
id="inputText1"
value="#{...}">
</xp:inputText>
<xp:inputText
id="inputText2"
value="#{...}">
</xp:inputText>
...
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句