Грязные формы перестают работать после того, как я открываю и закрываю модальные
У меня есть форма, где я хочу предупредить пользователя, чтобы сохранить свои данные. это сделано с Dirtyforms.
У меня есть кнопка в моей форме, которая открывает модальное диалоговое окно с дополнительной формой. Так,
1. Я открываю диалог формы
2. редактировать (или нет) мою новую форму в диалоге
3. закройте диалог
4. Вернитесь к моей первой форме и нажмите "прочь". Грязные формы не предупреждают меня о потере моих данных.
Я проверил это в режиме отладки, я вижу в своей консоли это:
[DirtyForms] Adding form w0 to forms to watch
[DirtyForms] Storing original value for _csrf
[DirtyForms] Storing original value for Prenajom[r1]
[DirtyForms] Entering: Leaving Event fired, type: click, element: http://k.local/..., class: btn btn-default popup-addon-table and id:
[DirtyForms] Leaving: Not dirty
[DirtyForms] Clearing the beforeunload event
При открытии модального события запускается событие ухода. Как я могу предотвратить это?
Спасибо!
2 ответа
По умолчанию все теги привязки (<a>
) прикрепить к ним событие, которое запускает диалоговое окно, потому что нет разумного способа провести различие между привязкой, которая покидает страницу, и привязкой, которая не покидает страницу. Если у вас есть якорные теги, которые не перемещаются, вы должны их игнорировать, чтобы они не запускали диалог.
Опция 1
Установите параметр ignoreSelector, чтобы игнорировать определенные поля, привязки или кнопки.
$('form').dirtyForms({ ignoreSelector: 'a.ignore-me' });
Вариант 2
Или добавьте значение $.DirtyForms.ignoreClass
к любым элементам, которые вы хотите игнорировать, и грязные формы будут игнорировать их.
$('#ignored-element').addClass($.DirtyForms.ignoreClass);
Вариант 3
Если вы хотите игнорировать более одного элемента одновременно, вы можете добавить значение $.DirtyForms.ignoreClass
(со значением по умолчанию dirtyignore
) к содержащему элементу.
<div class="dirtyignore">
<!-- Everything here will be ignored - anchor, input, textarea, and select -->
</div>
Я получил ответ от NightOwl888, который решил мою проблему:
"Одна вещь не так с вашими настройками заключается в том, что Dirty Forms всегда должны быть последним плагином jQuery в стеке, как отмечено в документации. Если вы прикрепляете событие к кнопке после инициализации Dirty Forms, оно может не корректно игнорироваться".