如何在多个ASP.NET验证控件上显示/隐藏错误消息?

时间:2011-11-18 11:48:30

标签: javascript asp.net validation

使用ASP.NET验证控件时,触发显示和隐藏错误消息只涉及特定的验证控件。这意味着,如果该控件失败,则仅控制显示的错误消息。

但我有两个下拉列表,应该跟随彼此的错误消息。它们仅在两者都具有值或根本没有值时才有效。

这是我的代码:

<script type="text/javascript" language="javascript">    
    function ValidateDDL(source, args) {
            var ddl_1 = $get('<%= DropDownList1.ClientID %>');
            var ddl_2 = $get('<%= DropDownList2.ClientID %>');
            var value_1 = ddl_1.options[ddlMailValue.selectedIndex].value;
            var value_2 = ddl_1.options[ddlMailValue.selectedIndex].value;

            if ((value_1== "" && value_2 != "") || (value_1 != "" && value_2 == "")) {
                    args.IsValid = false;
            }
            else {
                    args.IsValid = true;
            }
    }
</script>

<asp:DropDownList ID="DropDownList1" runat="server" CausesValidation="true"></asp:DropDownList>
<asp:CustomValidator ID="CustomValidator1" runat="server" ControlToValidate="DropDownList1" ValidateEmptyText="true" ClientValidationFunction="ValidateDDL" ></asp:CustomValidator>

<asp:DropDownList ID="DropDownList2" runat="server" CausesValidation="true"></asp:DropDownList>
<asp:CustomValidator ID="CustomValidator2" runat="server" ControlToValidate="DropDownList2" ValidateEmptyText="true" ClientValidationFunction="ValidateDDL" ></asp:CustomValidator>

但这意味着,当我更改第一个下拉列表(从有值到没有)时,它会验证'false',因为第二个下拉列表还没有值。但是,当我将第二个下拉列表更改为也包含值时,第一个错误消息仍然可见,因为该控件未经过验证。 当然,这只是视觉上的问题,因为当我尝试保存时,控件将验证“真实”。

但仍然......是否有办法获得第一个验证控件并将id设置为与第二个相同的状态(反之亦然)?

1 个答案:

答案 0 :(得分:0)

您是否考虑过仅在保存时使用验证器触发器?一旦输入值,您就可以暂停触发,而不是让它们一直触发,直到实际发生保存为止。只需将ValidationGroup分配给验证器和保存按钮,并仅在保存时验证。