从自定义方法调用客户端事件
本文关键字:事件 客户端 调用 自定义方法 | 更新日期: 2023-09-27 18:07:12
我有一个项目,我目前正在工作,当创建回发时有多个验证器和事件(经典的asp验证器控件)。
我有一个客户端方法调用当提交按钮被点击。它对各种服务进行ajax调用,一旦一切完成,就会进行回发(现在通过经典的document.forms[0].submit()
)。
这里的问题是,我的javascript方法是在其他javascript调用事件队列之前运行的。第二个问题是,我的方法返回false来阻止PostBack(我做异步调用,所以我需要确保PostBack只在我确定每个处理都完成时进行)。
我想要么在验证队列的末尾调用这个方法,要么在方法本身内部手动调用每个验证,然后运行ajax调用。
下面是一个POC来解释这个问题(简单的页面):
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
<script type="text/javascript">
Validate = function () {
setTimeout(function () { document.forms[0].submit() }, 2000);
return false;
}
</script>
<asp:TextBox runat="server" ID="txtSomething"></asp:TextBox>
<asp:Button ID="Button1" runat="server" onclick="Button1_Click" onclientclick="return Validate();" Text="Button" />
<asp:RequiredFieldValidator runat="server" ID="valRequiredTruc" ControlToValidate="txtSomething">something is required</asp:RequiredFieldValidator>
</asp:Content>
在这里,Validate函数阻止回发执行任何操作。2秒后,将创建回发,RequiredFieldValidator将验证服务器端的内容。我想使它验证客户端
也许javascript函数Page_ClientValidate()可以帮助您。使用此方法可以触发页面验证。
http://dotnetslackers.com/Community/blogs/kaushalparik/archive/2011/02/28/executing-server-validators-first-before-onclientclick-javascript-confirm-alert.aspx