JQuery предлагает пользователю сохранить при нажатии на ссылку подкачки или закрыть браузер - PullRequest
0 голосов
/ 03 декабря 2011

В основном у меня есть сетка с выпадающими списками. Правила таковы: 1. запрашивать у пользователей изменения, которые они вносят в откаты gridview, когда: а) пользователь нажимает на пейджинговую ссылку б) нажмите на другие ссылки, чтобы перейти от страницы в) закрыть браузер 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>

У меня проблемы с этим кодом. Когда я изменил раскрывающийся список и щелкнул ссылку подкачки, он сначала показывает всплывающее окно для функции щелчка, а затем дважды вызывает всплывающие окна для события beforeunload. Как мне решить эту проблему?

1 Ответ

0 голосов
/ 03 декабря 2011

Несколько проблем:

  1. wind - опечатка.Должно быть window.
  2. Финал }) не имеет аналогов;Я думаю, это тоже опечатка
  3. Вы забыли включить document в $(document).ready
  4. Не забывайте точки с запятой
  5. Оптимизация: используйте [] вместоnew Array()

Попробуйте это:

$(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 впереди.

...