ASP.NET,jQuery,脏窗体和window.onbeforeunload
|
在我的ASP.NET网络应用程序中,我尝试创建一种通用的方式来警告用户,在使用jQuery进行更改之前,先从表单导航.相当标准的东西,但经过大量的搜索,我还没有找到一种有效的技术. 这是我现在所在的: addToPostBack = function(func) {
var old__doPostBack = __doPostBack;
if (typeof __doPostBack != 'function') {
__doPostBack = func;
} else {
__doPostBack = function() {
old__doPostBack();
func();
}
}
}
var isDirty = false;
$(document).ready(function() {
addToPostBack(function() {
alert("Postback detected.")
clearDirty();
});
$(':input').bind("change select keydown",setDirty);
window.onbeforeunload = function(e) {
var msg = "You have unsaved changes. "
if (isDirty == true) {
var e = e || window.event;
if (e) { e.returnValue = msg; }
return msg;
}
};
});
setDirty = function() {isDirty = true;}
clearDirty = function() {isDirty = false;}
只要警告用户不要离开就行了.问题是我在每个相同的页面回发上收到警告.我的表单上有许多可能会触发回发的内容: >页面上有保存,取消和删除链接按钮 这些东西都不应该引起警告,因为用户没有离开页面.我的代码试图劫持addToPostBack(more details on that in this question)在发布之前清除isDirty位,但问题是在IE onbeforeunload在__doPostBack之前触发,显然是因为当点击链接时,IE会立即触发onbeforeunload(as described here). 当然,我可以连接每个这些控件以清除isDirty位,但是我更喜欢在表单级别上运行的解决方案,并且不需要我触摸可能触发回发的每个控件. 有没有人有一种在ASP.NET中工作的方法,并且不涉及每个可能导致回发的控件的布线? 解决方法我碰到这个帖子,而谷歌在一个解决方案做同样的事情在MVC.这个解决方案,从Herb的上面改编,似乎运作良好.由于没有关于MVC的具体内容,因此对于PHP,Classic ASP或使用HTML和JQuery的任何其他类型的应用程序来说,它也应该是一样的.var isDirty = false;
$(document).ready(function () {
$(':input').bind("change select keydown",setDirty);
$('form').submit(clearDirty);
window.onbeforeunload = function (e) {
var msg = "You have unsaved changes. "
if (isDirty == true) {
var e = e || window.event;
if (e) { e.returnValue = msg; }
return msg;
}
};
});
setDirty = function () { isDirty = true; }
clearDirty = function () { isDirty = false; } (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – 我可以从HttpContext获取控制器吗?
- asp.net-mvc – ASP.NET MVC JsonResult返回500
- ASP.NET奇怪的编译错误
- asp.net-mvc – DotNetOpenAuth在ASP.NET MVC中的OAuth
- asp.net-mvc – ASP.NET MVC中的小写URL
- asp.net-mvc-4 – 如何在MVC4中呈现远程ReportViewer aspx页
- asp.net – 电子邮件CSS
- 最好的asp.net日历/日程安排组件?
- asp.net – 检查表单是否有密钥?
- asp.net-mvc-3 – ASP.NET MVC视图模型不绑定在HTTP Post与
- 与ASP.net WEB API进行交易
- 强烈推荐的一个工具ReSharper
- asp.net – IIS URL Rewrite:添加除.html和.asp
- asp.net – 从ASP .Net应用程序上传大文件
- asp.net-mvc-3 – Apress Pro Asp.net MVC框架3
- BreezeJS vs JayData for ASP开发ASP.NET MVC
- asp.net – HttpUtility.HtmlEncode逃避太多了?
- asp.net-mvc – Web API和ASP MVC之间的主要区别
- asp.net-mvc – 如何将默认值显示为空白而不是类
- asp.net – 如何保护存储在web.config中的密码?
