为什么此CustomValidator客户端功能未触发?

时间:2014-06-10 21:12:53

标签: asp.net customvalidator

我有一个带有“后台”ID的下拉列表,如果没有选择任何内容或者值是其他内容,它应该触发我的客户端验证功能,但事实并非如此。我错过了什么吗?

我有以下客户端功能:

function cv26(oSrc, args) {//BACKGROUND,BG_OTHER 
            alert("cv26"); 
            var otherCtrl = document.getElementById("BG_OTHER"); 
            args.IsValid = (args.Value != " ") || (otherCtrl.value.length > 0); 
        }

我的自定义验证器如下所示:

<asp:CustomValidator ID="cv26" runat="server" ErrorMessage="26. Background is required." ControlToValidate="BACKGROUND"  ClientValidationFunction="cv26" Display="Dynamic" ValidateEmptyText="true">*</asp:CustomValidator>

2 个答案:

答案 0 :(得分:0)

问题#1:函数名称不匹配

ClientValidationFunction与函数名称不匹配。

在您的javascript中,您声明了函数cv26,但在您的CustomValidator中,您有用于ClientValidationFunction的val_cv26。因此,您要么将javascript函数更改为val_cv26,要么将ClientValidationFunction更改为cv26

问题#2:验证组

在原始代码中,您未指定任何验证组。请注意, CustomValidator Button2 都有 ValidationGroup =&#34; hi&#34; 。它们必须属于同一个验证组。如果您有多个按钮,则需要验证组,并且您只需要其中一个按钮来验证用户输入。如果你只有一个按钮,那么这不是问题。

<强> ASPX:

<asp:DropDownList ID="BACKGROUND" runat="server">
    <asp:ListItem Text=" --- SELECT ---" Value=""></asp:ListItem>
    <asp:ListItem Text="A"></asp:ListItem>
    <asp:ListItem Text="B"></asp:ListItem>
    <asp:ListItem Text="C"></asp:ListItem>
</asp:DropDownList>

<asp:CustomValidator ID="cv26" runat="server" 
                     ErrorMessage="26. Background is required." 
                     ControlToValidate="BACKGROUND"  
                     ClientValidationFunction="cv26" 
                     Display="Dynamic" ValidateEmptyText="true"   
                     ValidationGroup="hi">*</asp:CustomValidator>

<asp:Button ID="Button1" runat="server" 
            Text="Submit" onclick="Button1_Click"  
            ValidationGroup="hi" />

<强> JavaScript的:

function cv26(oSrc, args) {
    args.IsValid = (args.Value != ""); 
}
  • 您的验证何时开始?
  • 请提供背景声明
  • 请提供BG_Other
  • 的声明
  • 背景和BG_OTHER是否在同一个ASPX页面上?

答案 1 :(得分:0)

问题是ClientValidationFunction中的值。它应该是ClientValidationFunction="cv26",因为找不到val_cv26

改变这个:

<asp:CustomValidator ID="cv26" runat="server" 
    ErrorMessage="26. 
    Background is required." 
    ControlToValidate="BACKGROUND"  
    ClientValidationFunction="val_cv26" 
    Display="Dynamic" 
    ValidateEmptyText="true">*</asp:CustomValidator>

要:

<asp:CustomValidator ID="cv26" runat="server" 
    ErrorMessage="26. 
    Background is required." 
    ControlToValidate="BACKGROUND"  
    ClientValidationFunction="cv26" 
    Display="Dynamic" 
    ValidateEmptyText="true">*</asp:CustomValidator>

或者将您的JavaScript函数重命名为val_cv26