2011-11-18 77 views
1

当拥有ASP.NET验证控件时,显示和隐藏错误消息的触发只涉及特定的验证控件。意思是,如果该控制失败,则仅显示控制错误消息。如何在多个ASP.NET验证控件上显示/隐藏错误消息?

但我有两个dropdownlists应该遵循彼此的错误消息。只有当它们都有价值或没有价值时,它们才是有效的。

这是我的代码:

<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> 

但是这意味着,当我改变第一下拉列表(由具有价值没有),它验证“假”,因为第二个下拉列表没有一个值呢。但是,当我将第二个下拉列表更改为还包含值时,第一个错误消息仍然可见,因为该控件未经过验证。 当然,这只有视觉上的关注,因为当我试图保存时控件会验证'真'。

但仍......有办法弄到第一个验证控制和设置为第二个相同的状态(反之亦然)?

回答

0

您是否想过仅在保存时使用验证器触发器?当你输入数值时,不要让它们触发,而是直接保存。只需将ValidationGroup分配给您的验证器和保存按钮,并且只有在保存时验证。

相关问题