我有一个带有“后台”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>
答案 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 != "");
}
答案 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
。