在UpdatePanel中从jQuery submit()中防止ASP.net __doPostback()
如果我的自定义jQueryvalidation返回false,我试图在表单提交上停止回发。
有没有办法阻止__doPostback()函数在submit()函数内完成?
我假设:
$('#aspnetForm').submit(function () { return false; });
会做的伎俩,但显然事实并非如此:有没有人有建议?
submit()函数会阻止回发(如果你在firebug中的断点暂停,它不会回发),但是我似乎无法在submit()函数完成后停止事件发生!
干杯,艾德
编辑
好吧,我有一个快速的混乱,并发现我用来导致回发的按钮与更新面板绑定作为asyncpostbacktrigger的事实似乎是问题:如果我将其作为触发器删除(即导致它产品一个完整的回发),没有问题阻止回发与返回false;
任何想法为什么异步回发不会使用return false停止?
您必须使用客户端PageRequestManager
来正确处理AJAX提交事件。 (例如,防止异步回发。)
如果您无法完全控制页面,则页面上可以有JavaScript,只需调用__doPostBack()
而无需通过任何页面逻辑。 在这种情况下 – 除了上述之外 – 你必须存储旧window.__doPostBack()
并提供你自己的 – 在他的评论中提到的@tucaz。 (…正如你所提到的,它可能会因链接而变得非常困惑。)对于常规提交(非AJAX),您可以像其他人指出的那样提供事件处理程序。
此页面可能有所帮助,并且有一些使用PageRequestManager
代码示例。 特别是:
initialize : function() { ... this._onSubmitHandler = Function.createDelegate(this, this._onSubmit); this._onPartialUpdateEnd = Function.createDelegate(this, this._onUpdateEnd); if (typeof(Sys.WebForms)!== "undefined" && typeof(Sys.WebForms.PageRequestManager)!== "undefined") { Array.add(Sys.WebForms.PageRequestManager.getInstance()._onSubmitStatements, this._onSubmitHandler); Sys.WebForms.PageRequestManager.getInstance().add_endRequest(this._onPartialUpdateEnd); } else $addHandler(document.forms[0], "submit", this._onSubmitHandler); },
编辑 :按照上面的说法,这个,例如对我来说工作正常(.Net 3.5 SP1, Button1
在updatepanel中触发,等等):
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
$('#yourPostButton').click(function(){ return false; });
这应该做!
- 生成像StackOverflow这样的“toast”消息
- 使用jQuery $ .ajax()将JSON数据传递给带有自定义BindingModel的.NET MVC Action的问题
- jQuery UI对话框(模态),防止任何回发
- 文本框值是自动附加的,并使用jquery在下拉列表中替换
- 未捕获的SyntaxError:意外的令牌< – 在jQuery ajax中
- 在文档就绪时将jQuery UI对话框附加到ASP.NET表单
- 如何判断ASP中的页面卸载是否为PostBack
- 如何在Datatable Server Side处理中加载额外的Javascript?
- 阻止对asp.net .asmx Web服务的跨域调用