问题标签 [jquery-dirtyforms]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
971 浏览

javascript - Jquery Forms:使用备忘录模式构建脏表单通知系统 - 现有模式?

我目前正在构建一个脚本,它将在用户离开页面之前通知用户表单已更改(顺便说一句,这是一个 ASP.NET MVC 应用程序)。

我首先开始构建一个简单的脚本,该脚本检测用户是否更改了任何输入,然后稍微翻转以将表单指定为“脏”。

这最终太简单了,并且缺乏对扩展表单输入的支持,所以我接下来尝试了一个插件。

我能找到的最好的是:http: //mal.co.nz/code/jquery-dirty-forms/

这个 jquery 脏表单插件工作得很好,但仍然缺少我需要的一个重要功能;将以前的值与用户输入的值进行比较的能力。

例如,如果一个文本字段最初的值为“Foo Bar”,而用户将该值更改为“Foo”,则该表单现在是脏的。

当用户将该文本框的值更改回“Foo Bar”时,然后使用此插件,表单仍然是“脏”的,这根据我的要求是不正确的。

没有插件可以满足我的需要,所以我必须自己构建,这引出了我的问题:构建这种功能的最佳实践是什么?

我的想法是这样的:

  • 由于这个应用程序是 MVC,我可以使用以下技术:
    • jQuery
    • json
    • 数据注释

我最初的想法是:

  • 页面可以有多种形式;每个表单都有一个属性“isDirty”,最初设置为 false。
  • 我需要存储每个字段的原始值以进行比较(纪念品)
  • 每个字段都可以有一个类/标志/属性“isDirty”,它将调用该字段“突出显示等”
  • 我可以将这些字段值存储在 JSON NVP 数据结构中
  • 在提交时,JavaScript 将遍历该 JSON 字符串并查看原始值,与当前值进行比较,如果它无效,那么它将在违反脏规则的文本字段中添加“脏”标志(附加类名) .

性能和可重用性是明确的考虑因素。我应该能够将此模式应用于任何形式,并且只需很少的工作就可以让它使用原始值并执行验证。

有没有人看到与我的需求相似的现有模式?我的想法听起来可行吗?有人对我可以采取的更好路线提出意见吗?让我开始使用我可以扩展的代码示例会很棒,伪代码也很好。

[更新]

有人刚刚告诉我我正在尝试做的事情通常被称为“表单存储”,尽管谷歌对这个搜索词没有多大帮助。

我一直在使用的这个脚本与我想做的类似:(从此页面:http ://www.mydogboris.com/2009/10/using-jquery-data-feature-to-detect-form-变化/ )

0 投票
1 回答
3961 浏览

jquery - 使用 JQuery DirtyForms 插件的示例

我正在使用 jQuery DirtyForms 插件来防止用户无意中离开页面而不保存。我在对话框中遇到了一些问题。我有两个按钮:取消和不保存。

取消操作正常工作:对话框关闭,新页面未加载。但是,“不保存”操作不起作用。应该加载新页面,但它没有发生。

我一定遗漏了一些明显的东西。谁能看到我做错了什么?

谢谢!

-史蒂夫

0 投票
2 回答
536 浏览

jquery - jQuery Dirtyforms - 是否可以使用本机浏览器确认()作为对话框?

他们网站中的示例通常假设使用了 jquery 对话框,例如 facebox 或 jquery-ui。是否可以使用本机浏览器确认()作为对话框?如果是这样,有没有办法绑定确定和取消按钮?

0 投票
2 回答
368 浏览

forms - 带有dirtyforms jQuery插件的DropDownList

我想使用 jQuery 插件dirtyForms 来检查我的表单是否脏。但看起来 DropDownList 不是基于标准的 select HTML 标签。相反,它似乎正在使用

  • HTML 标记。为什么选择这个?因此,当我只更改 DropDownList 值时,jquery 插件dirtyForms 不会将我的表单设置为脏...

  • 0 投票
    1 回答
    1161 浏览

    javascript - 无法让自定义对话框与 DirtyForms 一起使用

    我正在使用DirtyForms并且插件的基本功能正在运行。当用户试图离开一个页面时,浏览器会抛出一个确认对话框。

    我们使用 jQuery UI 的对话框进行模态确认,我试图让它与 DirtyForms 一起使用,它有一个直接引用 jQuery UI 对话框的示例。我直接从他们的页面使用示例来设置自定义对话框,但它没有使用 jQuery 对话框,它仍然使用浏览器的本机对话框:

    打开插件的调试后,我没有收到任何错误(或任何其他 JS 错误),但模式对话框没有触发,只有浏览器的原生对话框。其他在同一页面上实现的 jQuery UI 对话框工作。我不确定我可能在这里遗漏了什么。任何帮助或见解将不胜感激。

    0 投票
    2 回答
    509 浏览

    javascript - window.onbeforeunload 不会立即触发

    我在我的网络应用程序中使用了一个 jQuery Dirty Forms 插件,如下所示:

    但是第一次点击任何链接都不会触发 onbeforeunload 事件。只有下一次点击才会触发它。这个问题在不同的浏览器(google chrome、firefox、ie10)中存在。怎么了?

    0 投票
    2 回答
    2749 浏览

    javascript - 当我尝试将表单设置为清理时,脏表单给出错误

    我有一个表单,我试图监控它何时变为“脏”(已更改),以便我可以启用“保存更改”按钮。这很简单。在 $(document).ready() 部分,我在表单上启用了dirtyForms。

    然后,我从 ajax 调用加载表单,在同一个函数中,我将其设置为 clean,然后开始调用一个函数来检查它何时变脏。

    这是我检查它何时变脏的功能。顺便说一句,如果有人知道做这部分的更好方法,请告诉我。

    你会注意到在 checkDirty 函数中,它有 clearTimeout(constant) 来阻止函数在表单变脏后不断重复。到目前为止,这一切都很好。这些按钮保持禁用状态,直到我更改某些内容然后几乎立即启用。当我回忆起使用 ajax 函数加载包含更多信息的表单时,问题就来了。当它重置表单时,它会在设置为清理时给出错误。它说,

    此错误位于 jquery.dirtyForms.js 文件中。它不会将表单设置为清理并重新启动监视功能。有谁知道我做错了什么?

    这是 zeroflagL 询问的函数。

    这是 facebox 调用的堆栈跟踪。

    0 投票
    1 回答
    72 浏览

    jquery - 当表单中没有任何更改时显示警报框

    当在使用此插件的表单中没有进行任何更改并且当用户退出表单时,它仍然显示未保存更改的警报框。所以请告诉我如何解决此问题,以便它的警报框仅在更改完成时出现forms .这是该插件的链接

    https://github.com/snikch/jquery.dirtyforms

    我通过使用特定形式的 id 来使用它

    0 投票
    2 回答
    28726 浏览

    jquery - 错误:在 iFrame 中访问属性“文档”的权限被拒绝

    我有一个父 html 页面,它使用 jquery 将具有源的动态 iframe 附加到另一个域。我已经设置了 X-Frame-Options 以允许这样做,并且加载纯内容不是问题。事实上,我所有的其他脚本似乎都运行良好。

    在 iFrame 中加载的 html 页面使用jQuery DirtyForms 插件,该插件有几行看起来像$(document)。脏表单代码和 jQuery 脚本都是 iframe 文档的本地代码。

    当任何这些行执行时,我在 Firefox 中收到以下错误(我尚未测试任何其他浏览器),错误:访问属性“文档”的权限被拒绝。

    我一直在阅读这方面的内容,如果父页面试图访问孩子的脚本或反之亦然,这似乎是一个问题,但在我的情况下,出错的脚本是孩子本地的。

    顺便提一句。未在 iFrame 中加载的子代码可以完美运行。

    我现在不知所措,无法找到解决方法。

    我假设 $(document) 以某种方式被评估为父级。

    有什么方法可以纠正这种行为吗?也许通过修改插件代码。也许,$(document).find('contentWindow')...??

    感谢您的帮助!谢谢。

    0 投票
    2 回答
    2012 浏览

    javascript - 如何排除控件使表单变脏?

    我正在使用这个:$('form').dirtyForms();https://github.com/snikch/jquery.dirtyforms检查我的表单是否脏。但是,在我的页面上,我有一些仅用于过滤的下拉列表(它们不应使我的表单“脏”)。现在,当我选择这些下拉列表中的任何一个时,它都会导致我的表单变脏。使用 jquery.dirtyforms (我阅读了他们的文档,但没有看到如何),我如何通过类名排除选择器(下拉菜单、文本框等),以便它们不会将表单标记为脏。

    我尝试了各种事情,比如为这些下拉列表/过滤器分配一个类,ignoreDirty然后在我的 jquery 中我这样做了:

    $('form').dirtyForms().ignoreClass('ignoreDirty');

    这会产生一个错误,所以我一定做错了什么。注意我也尝试通过属性设置它:

    $('form').dirtyForms({ ignoreClass : "ignoreDirty" });

    但这仍然使我的表单对于类名仍然为的任何控件都很脏ignoreDirty 请注意这些过滤器会导致回发,但可以说我去我的表单并且没有进行任何更改。我开始点击这些过滤器,然后在他们发回的那一刻发生这种情况:

    在此处输入图像描述