如何在更新面板更新之前执行javascript函数

如何在更新面板更新之前执行javascript函数,javascript,jquery,asp.net,submit,Javascript,Jquery,Asp.net,Submit,我希望在启动更新面板进行刷新之前运行jQuery函数。由于此刷新可以通过许多按钮和其他方式中的任何一种来完成,所以我希望使用submit处理程序或类似的东西,但它不起作用 我尝试将事件附加到主窗体: jQuery('form').submit(function () { alert('submit!'); }); 同时,也可以将其附加到更新面板 jQuery('#pnlContent').submit(function () { alert('submit!'); }); 有人知道怎么做吗?

我希望在启动更新面板进行刷新之前运行jQuery函数。由于此刷新可以通过许多按钮和其他方式中的任何一种来完成,所以我希望使用submit处理程序或类似的东西,但它不起作用

我尝试将事件附加到主窗体:

jQuery('form').submit(function () { alert('submit!'); });
同时,也可以将其附加到更新面板

jQuery('#pnlContent').submit(function () { alert('submit!'); });
有人知道怎么做吗?

您可以在表单中使用onsubmit=“return check();”。在像这样提交表单之前,它将检查此函数

function check(){
   // do javascript code
   // after check your javascript
   document.getElementById("frm1").submit();
}
HTML:

<form id="frm1" action="#" onsubmit="return check();">
    First name: <input type="text" name="fname"><br>
    Last name: <input type="text" name="lname"><br>
    <input type="submit" name="submit" value="Submit form">
</form>

名字:
姓氏:
您可以在表单中使用onsubmit=“return check();”。在像这样提交表单之前,它将检查此函数

function check(){
   // do javascript code
   // after check your javascript
   document.getElementById("frm1").submit();
}
HTML:

<form id="frm1" action="#" onsubmit="return check();">
    First name: <input type="text" name="fname"><br>
    Last name: <input type="text" name="lname"><br>
    <input type="submit" name="submit" value="Submit form">
</form>

名字:
姓氏:

这对我很有效。我明白了。基本上,您定义了更新之前要运行的函数,以及更新之后要运行的函数。然后将这些函数注册到页面请求管理器中运行

<script type="text/javascript">
    /* Put your code to run before UpdatePanel begins async postback here */
    function beforeAsyncPostBack() {
        var curtime = new Date();
        alert('Time before PostBack:   ' + curtime);           
    }

    /* Put your code to run after UpdatePanel finishes async postback here */
    function afterAsyncPostBack() {
        var curtime = new Date();           
        alert('Time after PostBack:    ' + curtime);
    }

    /* Don't mess with any of the below code */
    Sys.Application.add_init(appl_init);

    function appl_init() {
        var pgRegMgr = Sys.WebForms.PageRequestManager.getInstance();
        pgRegMgr.add_beginRequest(beforeAsyncPostBack);
        pgRegMgr.add_endRequest(afterAsyncPostBack);
    }      
</script>

/*在UpdatePanel开始异步回发之前,将代码放在此处运行*/
函数beforeasynchpostback(){
var curtime=新日期();
警报(“回发前的时间:”+curtime);
}
/*将代码放在UpdatePanel完成异步回发后运行*/
函数afterAsyncPostBack(){
var curtime=新日期();
警报(‘回发后的时间:’+curtime);
}
/*不要弄乱下面的任何代码*/
Sys.Application.add_init(appl_init);
函数appl_init(){
var pgRegMgr=Sys.WebForms.PageRequestManager.getInstance();
pgRegMgr.add_beginRequest(在异步回发之前);
pgRegMgr.add_endRequest(后异步回发);
}      

这对我很有效。我明白了。基本上,您定义了更新之前要运行的函数,以及更新之后要运行的函数。然后将这些函数注册到页面请求管理器中运行

<script type="text/javascript">
    /* Put your code to run before UpdatePanel begins async postback here */
    function beforeAsyncPostBack() {
        var curtime = new Date();
        alert('Time before PostBack:   ' + curtime);           
    }

    /* Put your code to run after UpdatePanel finishes async postback here */
    function afterAsyncPostBack() {
        var curtime = new Date();           
        alert('Time after PostBack:    ' + curtime);
    }

    /* Don't mess with any of the below code */
    Sys.Application.add_init(appl_init);

    function appl_init() {
        var pgRegMgr = Sys.WebForms.PageRequestManager.getInstance();
        pgRegMgr.add_beginRequest(beforeAsyncPostBack);
        pgRegMgr.add_endRequest(afterAsyncPostBack);
    }      
</script>

/*在UpdatePanel开始异步回发之前,将代码放在此处运行*/
函数beforeasynchpostback(){
var curtime=新日期();
警报(“回发前的时间:”+curtime);
}
/*将代码放在UpdatePanel完成异步回发后运行*/
函数afterAsyncPostBack(){
var curtime=新日期();
警报(‘回发后的时间:’+curtime);
}
/*不要弄乱下面的任何代码*/
Sys.Application.add_init(appl_init);
函数appl_init(){
var pgRegMgr=Sys.WebForms.PageRequestManager.getInstance();
pgRegMgr.add_beginRequest(在异步回发之前);
pgRegMgr.add_endRequest(后异步回发);
}      

UpdatePanel表单不是正常意义上的“已提交”。它是通过ajax“提交”的,所以这些事件不会触发。@Chad那么我可以用什么来代替呢?
UpdatePanel
表单不是正常意义上的“提交”。它是通过ajax“提交”的,这样这些事件就不会触发。@Chad那么我可以用什么来代替呢?似乎自动回邮没有触发该事件,是否还有其他事件?应该是@Psddp。但是如果你正在处理UpdatePanel,并且不得不像这样胡乱操作,那么我强烈建议你重新考虑你的整个策略,抛弃UpdatePanel。与修复所有的UpdatePanel和Web表单相比,您将花费更少的时间重写它。谢谢您的建议!似乎自动回发没有触发该事件,是否还有其他事件?应该是@Psddp。但是如果你正在处理UpdatePanel,并且不得不像这样胡乱操作,那么我强烈建议你重新考虑你的整个策略,抛弃UpdatePanel。与修复所有的UpdatePanel和Web表单相比,您将花费更少的时间重写它。谢谢您的建议!