如何在每个不同的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" >
*
</asp:CustomValidator>
它必须检查两个复选框的状态:chbMaschio
和chbFemmina
(在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
,如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>