打开和关闭模态后,Dirtyforms停止工作

时间:2017-01-09 10:31:14

标签: jquery-dirtyforms

我有一个表单,我想警告用户保存他们的数据。这是用Dirtyforms完成的。

我的表单中有一个按钮,可以打开一个带有一些额外表单的模态对话框。所以,
1.我打开表单对话框
2.在对话框中编辑(或不编辑)我的新表格 3.关闭对话框
4.返回我的第一个表格,然后点击。 dirtyforms没有警告我丢失我的数据。

我在调试模式下检查了它,我在控制台中看到了这个:

[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 个答案:

答案 0 :(得分:2)

默认情况下,所有锚标记(<a>)都会附加一个附加到它们的事件来触发对话框,因为没有合理的方法可以区分离开页面的锚点和不显示页面的锚点。如果您的锚标记无法离开,则应ignore them,以便他们不会触发对话框。

选项1

设置ignoreSelector选项以忽略特定字段,锚点或按钮。

$('form').dirtyForms({ ignoreSelector: 'a.ignore-me' });

选项2

或者,将$.DirtyForms.ignoreClass的值添加到您要忽略的任何元素,Dirty Forms将忽略它们。

$('#ignored-element').addClass($.DirtyForms.ignoreClass);

选项3

如果您想一次忽略多个元素,可以将$.DirtyForms.ignoreClass(使用默认值dirtyignore)的值添加到包含元素。

<div class="dirtyignore">

    <!-- Everything here will be ignored - anchor, input, textarea, and select -->

</div>

答案 1 :(得分:1)

我收到了NightOwl888的答案,解决了我的问题:

“您的设置有一个问题是Dirty Forms应该始终是堆栈中的最后一个jQuery插件,如文档中所述。如果您在初始化Dirty Forms后将事件附加到按钮,则可能无法正确忽略。“