我已将ClientValidationFunction的CustomValidator设置为:
<asp:CustomValidator ID="CustomValidator1" runat="server" Display="Dynamic" EnableClientScript="true" ClientValidationFunction="checkClients" ErrorMessage="You must select at least one client or staff" SetFocusOnError="true"></asp:CustomValidator>
我将我的Javascript函数设置为:
<script type="text/javascript">
function checkClients(sender, args) {
if ($find("<%= selSelectedClientFamily.ClientID %>").get_items().get_count() > 0) {
args.IsValid = true;
} else {
args.IsValid = false;
}
}
</script>
我将这一切都放在用户控件中,我将其放入另一页的表单中。
测试时,验证正在激活,实际上JS函数已执行并且工作正常。但是 - 无论IsValid是真还是假,都会提交表单。就像它正在执行但没有注意结果。有什么想法吗?
答案 0 :(得分:1)
页面是否有回传?
如果是,您是否还可以提供ValidateSelectedClients服务器端验证器的内容?
或许最好检查它是否在服务器端正确验证。
除此之外,如果您在网络表单中多次使用您的用户控件,那么就是这样。因为如果在标记上设置验证JS函数并且如果在同一页面上插入多个控件,则可能会出现问题:因为该函数将具有相同的名称,所以每个控件将一次又一次地重写此函数。我建议你在这种情况下在服务器端生成客户端控件。
要检查客户端验证器:我会在客户端函数的开头添加警报,如:
alert( $find("<%= selSelectedClientFamily.ClientID %>").length )
以及
alert( $find("<%= selSelectedClientFamily.ClientID %>").get_items().length )
只是为了看看我是否真的得到了所需的DOM对象,以及我是否真正点击了那部分代码。
我还会在代码末尾添加最后一个警告
alert('The end of client validator function is reached')
答案 1 :(得分:0)
我能够解决这个问题。事实证明,提交时发生了一个javascript错误,导致问题的第三方控件。