我有一个表单,我想警告用户保存他们的数据。 它是用脏形完成的。
我的表单中有一个按钮,可以打开一个带有一些额外表单的模式对话框。所以
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
在打开模态时,它会触发离开事件。我该如何预防它?
谢谢!
默认情况下,所有锚标记 ( <a>
) 都会附加一个触发对话框的事件,因为没有合理的方法来区分离开页面的锚点和不离开页面的锚点。如果您有未导航离开的锚标记,则应忽略它们,以便它们不会触发对话框。
选项 1
设置忽略选择器选项以忽略特定字段、锚点或按钮。
$('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插件,如文档中所述。如果在初始化脏窗体后将事件附加到按钮,则可能不会正确忽略。