3

我在表单上使用 ErrorMessage 控件来验证编辑框之类的内容。效果很好。当需要输入数据时,会弹出灰色的小警报类型框。

谁能给我举个例子,说明我如何对单选按钮、组合框等做同样的事情?甚至是一个常规按钮(比如我在表单上有一个添加文档按钮)。

我真的不在乎消息的实际显示方式。我只想让我的验证在所有组件的验证中保持一致。换句话说,我不想要一些服务器端和一些客户端验证。

有什么例子吗?我一直在使用我自己的 ext lib 对话框进行验证,效果很好,但我希望有一些更容易实现的东西。

4

4 回答 4

5

我一直在使用此 XSnippet 的扩展版本进行验证。这使您可以在中央 SSJS 库中管理所有验证,然后在 Display Errors 控件中显示所有错误。

然后,在中央 SSJS 库中,您可以验证您的控件,包括单选按钮、组合框等,并结合您的验证(例如,当另一个控件具有特定值时检查一个控件的值)。

这是一个基于上述 XSnippet 的示例,用于验证当单选按钮组 (radioField) 的值为 1 时是否已填写某个字段 (FieldA):

var radioVal = getComponent("radioField").value;
var control = getComponent("FieldA");
var val = control.getValue();
if (radioVal == "1" && isEmpty(val)){
  valid = false;
  postValidationError(control, "Please fill in ...");
}
于 2013-02-06T07:55:30.447 回答
3

我希望 ErrorMessage 控件是指“显示错误”控件。对于“数据”内的所有属性中的组合框,您将找到“验证器”。在这里,您可以像添加编辑框一样添加验证。对于组合框,我通常使用validateExpression. 然后我使用“显示错误”控件来显示错误。

<xp:comboBox id="comboBox1">
    <xp:this.validators>
        <xp:validateExpression message="Please select value in combo box.">
            <xp:this.expression><![CDATA[#{javascript:!getComponent("comboBox1").getSubmittedValue().equalsIgnoreCase("Select")}]]></xp:this.expression>
        </xp:validateExpression>
    </xp:this.validators>
    <xp:selectItem itemLabel="Select" itemValue="Select"></xp:selectItem>
    <xp:selectItem itemLabel="1" itemValue="1"></xp:selectItem>
    <xp:selectItem itemLabel="2" itemValue="2"></xp:selectItem>
    <xp:selectItem itemLabel="3" itemValue="3"></xp:selectItem>
</xp:comboBox>
<xp:message id="message1" for="comboBox1"></xp:message>

在上面的示例中,如果用户没有在组合框中选择任何项目,则错误消息将显示给用户。请注意,这是服务器端验证。我还没有尝试过其他控件,但它应该以类似的方式工作。

让我知道我是否正确理解了您的问题。

2013 年 2 月 7 日更新:请查看以下 Mikael Grevsten 的评论以获得更好的方法。

于 2013-02-06T13:21:17.200 回答
0

甚至最简单直接:如果您有“选择一个选项”之类的选项并设置空值“”,则可以使用validateRequired,仅此而已。例子:

如果组合框值为:

["-Select an option-|","Text1|Value1","Text2|Value2"] 

正如@Naveen 所说,您可以转到所有属性> 数据> 验证器> + > ValidateRequired > 设置您的消息,您就完成了。

于 2014-01-09T14:25:33.150 回答
0

能够通过使用@GetField 和组的名称来验证一组单选按钮。

在此示例中,组名称为 BankLoss:

// BankLoss
var radio1 = @GetField("BankLoss")
if (radio1 == null || radio1 == ""){
    valid = false;
    errors.push("Please indicate if there was a potential bank loss.");
}

为我工作...

于 2013-07-26T20:27:47.730 回答