如何在每个不同的CustomValidator上传递相同的JavaScript函数

本文关键字:JavaScript 函数 CustomValidator | 更新日期: 2023-09-27 18:14:03

我有一个UserControl,我插入WebForm多次(如10次)。在UserControl中,我有一个CustomValidator:

<asp:CustomValidator ClientValidationFunction='CustomValidatorSesso' 
                    ValidationGroup="richiestaIscrizione" 
                    Runat="server" 
                    ID="cvSesso" 
                    onservervalidate="CustomValidatorSesso_ServerValidate" >
                    &nbsp;*
</asp:CustomValidator>

它必须检查两个复选框的状态:chbMaschiochbFemmina(在UserControl中)。

在客户端,我需要(对于每个用户控件)检查它们中是否至少有一个被选中(对于每个UserControl),并通知(我将使用ValidationSummery)哪个UserControl的两个字段都为空。

简而言之:每个UserControl都是一个"人",我需要检查用户是否设置了性别(M或F)。如果没有,显示哪个人没有设置。

我在UserControl

中添加了这个函数
function CustomValidatorSesso(oSrc, args) {
    if (!$("#<%=chbFemmina.ClientID%>").is(":checked") && !$("#<%=chbMaschio.ClientID%>").is(":checked")) {
        args.IsValid = false;
    }
}

但是这不起作用,因为它将在DOM中放置10倍相同的Javascript函数。如何为特定的UserControl调用相同的javascript函数?

如何在每个不同的CustomValidator上传递相同的JavaScript函数

不幸的是,复选框不能这样做。但是你可以使用其他控件,可以使用CustomValidator,如TextBoxes:

<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:CustomValidator ClientValidationFunction="CustomValidatorSesso"
    ValidationGroup="richiestaIscrizione"
    runat="server"
    ID="cvSesso" ControlToValidate="CheckBox1">
</asp:CustomValidator>
<script type="text/html">
    function CustomValidatorSesso(oSrc, args) {
        if (args.Value.length > 3) {
            args.IsValid = true;
        } else {
            args.IsValid = false;
        }
    }
</script>