C# 页面回发上的Javascript事件

C# 页面回发上的Javascript事件,c#,asp.net,javascript,C#,Asp.net,Javascript,是否存在在回发时触发的javascript事件 如果没有,如何在页面回发之后或之前立即运行客户端代码?使用AJAX,并为表单标记上的事件提供事件处理程序 当使用jQuery时,它是这样的 $("#yourformtagid").submit(function () { ... } 您可以像这样在页面加载中添加javascript Page.ClientScript.RegisterStartupScript(this.GetType(), "alert", "alert('hell

是否存在在回发时触发的javascript事件


如果没有,如何在页面回发之后或之前立即运行客户端代码?

使用AJAX,并为表单标记上的事件提供事件处理程序

当使用jQuery时,它是这样的

$("#yourformtagid").submit(function () {
 ...
}

您可以像这样在页面加载中添加javascript

Page.ClientScript.RegisterStartupScript(this.GetType(), "alert", 
    "alert('hello world');", true);


回发后加载页面时不会触发javascript事件,但您可以将javascript添加到html模板(.aspx文件)中,并仅在页面已发布时运行,如下所示:

<script type='text/javascript'>
    var isPostBack = '<%= this.IsPostBack%>' == 'True';
    if (isPostBack) {
        alert('It's a PostBack!');
    }
</script>

var isPostBack=''='True';
如果(iPostBack){
警惕(“这是回发!”);
}
如果您希望自定义javascript以仅在特定条件下运行(而不仅仅是任何回发),则可以在页面的类中创建页面级别变量(受保护或公共),并执行类似操作:

var userClickedSubmit = '<%= this.UserClickedSubmit%>' == 'True';
if (userClickedSubmit) {
    // Do something in javascript
}
var userClickedSubmit=''='True';
如果(用户单击提交){
//用javascript做点什么
}

(与
ClientScript.RegisterStartupScript
无关,这很好-有时您希望将javascript保留在页面模板中,有时您希望将其保留在页面类中。)

页面.ClientScript对象具有一个在任何输入提交表单后激发的This属性。这可能是您想要的,也可能不是,但我用它来通知用户可编辑表单中未保存的更改


与RegisterStartupScript相比,使用此脚本的优势在于,使用RegisterOnSubmitState时,如果用户使用浏览器来回导航,则使用RegisterStartupScript注入的任何脚本都可能再次触发,然而,RegisterOnSubmitStatement只有在用户提交表单后才会运行。

我不知道您是否仍然需要,但请查看以下内容:

我使用以下方法解决我的问题:

<script type="text/javascript">
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_endRequest(function (s, e) {
    alert('Postback!');
});
继续前进。这取决于你需要什么


问候=)

我相信你要找的是

摘录:

beginRequest事件在处理请求之前引发 异步回发启动,并将回发发送到服务器。 您可以使用此事件调用自定义脚本来设置请求头 或者启动一个动画,通知用户回发已完成 正在处理中

代码示例:(来自链接)


Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(BeginRequestHandler);
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
函数BeginRequestHandler(发送方,参数)
{
var elem=args.get_postBackElement();
ActivateAlertDiv('visible','AlertDiv',elem.value+'processing…');
}
函数EndRequestHandler(发送方,参数)
{
ActivateAlertDiv('hidden','AlertDiv','');
}
函数ActivateAlertDiv(visstring、elem、msg)
{
var adiv=$get(要素);
adiv.style.visibility=visstring;
adiv.innerHTML=msg;
}

我希望这有帮助。该类似乎鲜为人知,利用率也很低。

+1欢迎使用Stack Overflow,Bruno.JQuery?不确定OP是否只想使用完整的框架来完成其任务;)但是每个站点都应该有jQuery,以防万一:-)在webforms回发之前不会触发jQuery提交事件。谢谢,我会尝试这种方法!这个答案是对其他答案中方法的有益补充
<script type="text/javascript">
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_endRequest(function (s, e) {
    alert('Postback!');
});
$('#id').live('change', function (){});

$(document).ready(function () {});
ClientScriptManager.RegisterStartupScript(this.GetType(), "AKey", "MyFunction();", true);
<script type="text/javascript" language="javascript">
    Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(BeginRequestHandler);
    Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
    function BeginRequestHandler(sender, args)
    {
        var elem = args.get_postBackElement();
        ActivateAlertDiv('visible', 'AlertDiv', elem.value + ' processing...');
    }
    function EndRequestHandler(sender, args)
    {
        ActivateAlertDiv('hidden', 'AlertDiv', '');
    }
    function ActivateAlertDiv(visstring, elem, msg)
    {
        var adiv = $get(elem);
        adiv.style.visibility = visstring;
        adiv.innerHTML = msg;                     
    }
</script>