Я использую это, чтобы проверить, загрязнена ли форма. По умолчанию используется стандартное подтверждение браузера, если вы уверены, что хотите перейти от этой страницы. На сайте 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 диалоговое окно Что я делаю неправильно здесь?
Вы можете всплывать только по отдельному диалоговому окну, если пользователь пытается уйти, щелкнув якорь или другой элемент на вашей странице.
Затем вы можете просто перехватить клик на всех якорях и т.д., Предотвратить его, вывести настраиваемый диалог для подтверждения. Другими словами, когда кто-то нажимает элемент на вашей странице, вы контролируете ситуацию и можете делать все, что захотите.
Однако, когда пользователь пытается уйти, закрыв вкладку или браузер, вы не можете остановить их с помощью javascript, так как это было бы необычайно неприятно, если бы сайты могли это сделать.
Единственный способ пригласить пользователя, который уходит, закрывая окно вкладки/браузера, - это использовать событие onbeforeunload, и это событие можно использовать только с встроенным диалоговым окном подтверждения, нет возможности использовать настраиваемое диалоговое окно или остановить пользователя или делать что-либо еще на самом деле, поскольку это может привести к созданию определенных веб-сайтов, в которых вы никогда не сможете покинуть сайт.
Из README:
Dirty Forms будет предупреждать пользователя, когда они попытаются покинуть страницу, не отправив форму, в которую они ввели данные. Он предупреждает их в модальном всплывающем окне, а также возвращается к обработчику по умолчанию onBeforeUnload браузера для событий вне области документа, таких как, но не ограничиваясь, обновления страниц и кнопки навигации браузера.
(акцент мой)
Если вы хотите показать модальный для такого рода вещей, ну, вы просто не можете. (Причина, по которой это безопасность: легко представить себе страницу, позволяющую пользователю закрыть ее, как они пытаются, не убивая экземпляр браузера.)
Кроме того, бит "но не ограничиваясь" является интригующим: я хотел бы попросить автора плагина получить подробную информацию о том, что именно это охватывает, так как оно может накладываться на ваш прецедент.