从自定义方法调用客户端事件

本文关键字:事件 客户端 调用 自定义方法 | 更新日期: 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