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

时间:2011-09-01 19:33:43

标签: c# javascript asp.net javascript-events

我有一个我正在处理的项目,当创建回发时有多个验证器和事件(经典的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秒后创建一个Postback,RequiredFieldValidator验证服务器端的内容。我想让它验证客户端。

1 个答案:

答案 0 :(得分:1)

也许javascript函数Page_ClientValidate()可以帮到你。使用此方法可以触发页面验证。

http://dotnetslackers.com/Community/blogs/kaushalparik/archive/2011/02/28/executing-server-validators-first-before-onclientclick-javascript-confirm-alert.aspx