我有一个表单,我想警告用户保存他们的数据。这是用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
在打开模态时,会触发离开事件。 我该如何预防?
谢谢!
答案 0 :(得分:2)
默认情况下,所有锚标记(<a>
)都会附加一个附加到它们的事件来触发对话框,因为没有合理的方法可以区分离开页面的锚点和不显示页面的锚点。如果您的锚标记无法离开,则应ignore them,以便他们不会触发对话框。
设置ignoreSelector选项以忽略特定字段,锚点或按钮。
$('form').dirtyForms({ ignoreSelector: 'a.ignore-me' });
或者,将$.DirtyForms.ignoreClass
的值添加到您要忽略的任何元素,Dirty Forms将忽略它们。
$('#ignored-element').addClass($.DirtyForms.ignoreClass);
如果您想一次忽略多个元素,可以将$.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后将事件附加到按钮,则可能无法正确忽略。“