点击分页链接或关闭浏览器时,jquery提示用户保存

时间:2011-12-02 20:01:00

标签: jquery gridview prompt

基本上我有一个带有下拉菜单的gridview。规则是: 1.在以下情况下,提示用户在gridview的drowdown中进行更改:     a)用户点击分页链接     b)单击其他链接以离开页面     c)关闭浏览器 2.单击保存按钮时不要提示用户

我在这里找到了一些代码http://www.codeproject.com/KB/scripting/WebFormModifedPrompt.aspx 并做了一些修改:

<script type="text/javascript" >
        $().ready(function () {
            InitialDictionary = new Array();
            LoadCurrentValues(InitialDictionary);

            function Check() {
                if (!CompareDictionaries(InitialDictionary)) {
                    wind.onbeforeunload = null;
                    return confirm('Form is modified, Do you want to continue');

                }
            }

            $("a").click(Check)
            $(window).bind('beforeunload', function () {
                if (!CompareDictionaries(InitialDictionary)) {
                    return "Form is modified, Do you want to continue";

                }
            })
            $('form').submit(function () { window.onbeforeunload = null; })
        })
    </script>

我在使用此代码时遇到问题,当我更改下拉列表并单击分页链接时,它首先显示弹出的click功能,然后它会为beforeunload事件触发2次弹出窗口。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

一些问题:

  1. wind是一个错字。应该是window
  2. 最终})无与伦比;我认为这也是一个错字
  3. 您忘了在document
  4. 中加入$(document).ready
  5. 不要忘记分号
  6. 优化:使用[]代替new Array()
  7. 试试这个:

    $(document).ready(function() {
        InitialDictionary = [];
        LoadCurrentValues(InitialDictionary);
    
        function Check() {
            if (!CompareDictionaries(InitialDictionary)) {
                window.onbeforeunload = null;
                return confirm('Form is modified, Do you want to continue');
            }
        }
    
        $("a").click(Check);
        $(window).bind('beforeunload', function() {
            if (!CompareDictionaries(InitialDictionary)) {
                return "Form is modified, Do you want to continue";
    
            }
        })
        $('form').submit(function() {
            window.onbeforeunload = null;
        })
    });
    

    另外,我假设你在这里有一些外部功能。此外,除非在其他位置定义InitialDictionary,否则请务必在前面添加var