使用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设置为与第二个相同的状态(反之亦然)?
答案 0 :(得分:0)
您是否考虑过仅在保存时使用验证器触发器?一旦输入值,您就可以暂停触发,而不是让它们一直触发,直到实际发生保存为止。只需将ValidationGroup
分配给验证器和保存按钮,并仅在保存时验证。