JQuery грязная запись, хотел бы JQuery UI модальный

0

Я использую это, чтобы проверить, загрязнена ли форма. По умолчанию используется стандартное подтверждение браузера, если вы уверены, что хотите перейти от этой страницы. На сайте jquery dirtyforms есть раздел, в котором говорится, что вы можете использовать форму jquery ui modal.

Поэтому я попытался добавить раздел (div) следующим образом:

 <div id="unsavedChanges" title="Save Changes?">
            <p>You've made changes to this page. Do you want to leave this page without saving?</p>
        </div>

И затем я добавил, как выглядел их код:

 $.DirtyForms.dialog = {
        selector: '#unsavedChanges',
        fire: function(message, dlgTitle) {
            $('#unsavedChanges').dialog({ title: dlgTitle, width: 350, modal: true });
            $('#unsavedChanges').html(message);
        },
        bind: function() {
            $('#unsavedChanges').dialog('option', 'buttons',
                [
                    {
                        text: "Stay Here",
                        click: function(e) {
                            $.DirtyForms.choiceContinue = false;
                            $(this).dialog('close');
                        }
                    },
                    {
                        text: "Leave This Page",
                        click: function(e) {
                            $.DirtyForms.choiceContinue = true;
                            $(this).dialog('close');
                        }
                    }
                ]
            ).bind('dialogclose', function(e) {
                // Execute the choice after the modal dialog closes
                $.DirtyForms.choiceCommit(e);
            });
        },
        refire: function(content) {
            return false;
        },
        stash: function() {
            return false;
        }
    };

Хотя я не уверен, где они хотят, чтобы я разместил это (я изначально разместил его за пределами document.ready, после запуска этого и внесения изменений в мою форму и навигации, я вижу, что он все еще использует подтверждение браузера, а не jquery ui диалоговое окно Что я делаю неправильно здесь?

  • 0
    хммм. Просто читая документацию, я чувствую, что это немного устарело, поскольку он ссылается на jquery 1.4.2 и 1.7.2. И jquery, и jquery ui пришли с тех пор. Кто-нибудь, можете ли вы опубликовать эту скрипку, чтобы мы могли поиграть с ней, используя ту версию jquery и jquery ui, которую вы используете?
  • 0
    Это выглядит как более современный эквивалент: plugins.jquery.com/are-you-sure
Показать ещё 2 комментария

2 ответа

3

Вы можете всплывать только по отдельному диалоговому окну, если пользователь пытается уйти, щелкнув якорь или другой элемент на вашей странице.

Затем вы можете просто перехватить клик на всех якорях и т.д., Предотвратить его, вывести настраиваемый диалог для подтверждения. Другими словами, когда кто-то нажимает элемент на вашей странице, вы контролируете ситуацию и можете делать все, что захотите.

Однако, когда пользователь пытается уйти, закрыв вкладку или браузер, вы не можете остановить их с помощью javascript, так как это было бы необычайно неприятно, если бы сайты могли это сделать.

Единственный способ пригласить пользователя, который уходит, закрывая окно вкладки/браузера, - это использовать событие onbeforeunload, и это событие можно использовать только с встроенным диалоговым окном подтверждения, нет возможности использовать настраиваемое диалоговое окно или остановить пользователя или делать что-либо еще на самом деле, поскольку это может привести к созданию определенных веб-сайтов, в которых вы никогда не сможете покинуть сайт.

0

Из README:

Dirty Forms будет предупреждать пользователя, когда они попытаются покинуть страницу, не отправив форму, в которую они ввели данные. Он предупреждает их в модальном всплывающем окне, а также возвращается к обработчику по умолчанию onBeforeUnload браузера для событий вне области документа, таких как, но не ограничиваясь, обновления страниц и кнопки навигации браузера.

(акцент мой)

Если вы хотите показать модальный для такого рода вещей, ну, вы просто не можете. (Причина, по которой это безопасность: легко представить себе страницу, позволяющую пользователю закрыть ее, как они пытаются, не убивая экземпляр браузера.)

Кроме того, бит "но не ограничиваясь" является интригующим: я хотел бы попросить автора плагина получить подробную информацию о том, что именно это охватывает, так как оно может накладываться на ваш прецедент.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню