0

我有一个表单,我想警告用户保存他们的数据。它是用 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

在打开模式时,它会触发离开事件。我该如何预防?

谢谢!

4

2 回答 2

2

默认情况下,所有锚标记 ( <a>) 都会附加一个触发对话框的事件,因为没有合理的方法来区分离开页面的锚点和不离开页面的锚点。如果您有无法离开的锚标签,您应该忽略它们,这样它们就不会触发对话框。

选项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>
于 2017-01-10T07:52:59.203 回答
1

我收到了来自@NightOwl888 的答复,解决了我的问题:

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

于 2017-01-18T14:49:39.363 回答