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

时间:2016-10-20 10:21:05

标签: javascript c# .net

我有一个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函数?

1 个答案:

答案 0 :(得分:0)

不幸的是,你不能用CheckBoxes做到这一点。但您可以使用其他可以使用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>