asp.Net   发布时间:2022-04-07  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了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;}

只要警告用户不要离开就行了.问题是我在每个相同的页面回发上收到警告.我的表单上有许多可能会触发回发的内容:

>页面上有保存,取消和删除链接按钮
>页面上可能还有其他的linkbutton在同一页面上执行服务器端功能
>可能还有其他的控件,autopostBACk = true,它们也附有服务器端功能,但不会导致用户离开页面.

这些东西都不应该引起警告,因为用户没有离开页面.我的代码试图劫持addToPostBACk(more details on that in this question)在发布之前清除isDirty位,但问题是在IE onbeforeunload在__dopostBACk之前触发,显然是因为当点击链接时,IE会立即触发onb​​eforeunload(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,jQuery,脏窗体和window.onbeforeunload全部内容,希望文章能够帮你解决ASP.NET,jQuery,脏窗体和window.onbeforeunload所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。