0

我有一个在用户控件中的复选框,用户控件在向导控件中,向导控件在具有母版页的内容页面上。

必须在向导控件完成之前选中该复选框。复选框和 customvalidator 位于向导控件的最后一步。

现在一切都可以在 Firefox 上正常工作,当我也用 ie 测试它时。但不知何故,其他人可能无需选中复选框即可继续该过程。该复选框还有一个切换按钮扩展器。我希望这不是问题。

我的内联 javascript(在用户控件中)

<script language="javascript" type="text/javascript">
    // <![CDATA[
    function ValidateTandCs(source, args)
    {
        args.IsValid = document.getElementById('<%= cbAV.ClientID %>').checked;
    } 
    // ]]>
</script> 

复选框:

<asp:checkbox id="cbAV" runat="server"/>

customevalidator 和 togglebutton 扩展器

<asp:CustomValidator 
     ID="rfvAV" 
     Display="Dynamic" 
     runat="server" 
     ControlToValidate="cbAV" 
     ErrorMessage="RequiredFieldValidator" 
     ClientValidationFunction="ValidateTandCs" 
     onservervalidate="rfvAV_ServerValidate">
</asp:CustomValidator>
<ajaxToolkit:ToggleButtonExtender 
     ID="tbeav" 
     runat="server" 
     TargetControlID="cbAV" 
     ImageHeight="15" 
     ImageWidth="15" 
     CheckedImageUrl="~/images/checkbox-on.gif" 
     UncheckedImageUrl="~/images/checkbox-off.gif" />

customvalidator 背后的代码

protected void rfvAV_ServerValidate(object source, ServerValidateEventArgs args)
{
    args.IsValid = (cbAV.Checked);
}

我试图从 customvalidator 中删除客户端验证,但是当我只有服务器验证时。它不起作用

4

2 回答 2

0

为什么你在客户端和服务器端都使用一个验证例程?

尝试删除您的 ClientValidationFunction 属性并保留 OnServerValidate 属性。

于 2009-12-11T16:06:18.217 回答
0

发现了问题。那是javascript(客户端)在IE中不起作用。服务器端验证,验证得非常好。但是当您单击向导控件的完成按钮时,它没有 page.isvalid 检查。所以它只是忽略了无效的验证器。我的错。

于 2010-01-12T14:03:59.590 回答