我有一个简单的:如果选中“是”单选按钮而不是使文本框成为必需的情况。我提供了客户端和服务器端验证。我发现的是:
- 客户端验证正在触发并通过警报消息正确显示失败。
- 验证控件从不呈现错误消息并且服务器被命中。
- 当服务器被击中并且验证失败时,控件会呈现正确的错误消息。
为什么客户端在验证方面工作正常,但没有呈现错误消息并继续到服务器?
asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
<script src="Scripts/jquery-1.7.2.js" type="text/javascript"></script>
<script type="text/javascript">
function testClientValidation(src, args) {
if ($('#<%=rblstTest.ClientID%>' + ' input:checked').length == 1) {
if ($('#<%=rblstTest.ClientID%>' + ' input:checked').val().toLowerCase() == "yes") {
args.isValid = !($('#<%=txtTest.ClientID%>').val() == "");
} else {
args.isValid = true;
}
} else {
args.isValid = true;
}
alert(args.isValid);
}
</script>
</asp:Content>
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
<div>
<asp:RadioButtonList ID="rblstTest" RepeatDirection="Horizontal" RepeatLayout="Flow" runat="server">
<asp:ListItem>Yes</asp:ListItem>
<asp:ListItem>No</asp:ListItem>
</asp:RadioButtonList>
<asp:TextBox ID="txtTest" runat="server"/>
<asp:CustomValidator ID="cust" ControlToValidate="rblstTest"
OnServerValidate="testSeverValidation"
ClientValidationFunction="testClientValidation"
Display="Dynamic"
ErrorMessage="Error!" runat="server"/>
<asp:LinkButton runat="server" ID="lnkSubmit" Text="Submit" />
</div>
</asp:Content>