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

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

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

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

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

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

但这仍然使我的表格脏了任​​何控件的类名仍然是ignoreDirty请注意这些filter导致回发,但让我说我去我的表单,并没有做一个单一的更改。 我开始点击这些filter,他们回发的那一刻发生了这种情况:

在此处输入图像描述

这里似乎有两个不同的问题。

首先,您尝试将ignoreClass设置为ignoredirtyignoredirty是默认值,因此没有理由设置它。 但是,如果您确实需要将其设置为其他内容,则可以使用以下语法执行此操作:

 $.DirtyForms.ignoreClass = 'my-ignore-class'; 

其次,在1.0.0版本中, ignoreClass仅适用于超链接。 此行为已修改为使用版本1.1.0中的输入和选择元素。

在1.2.0版中,您现在还可以将ignoreClass设置为父容器元素,以忽略来自其中任何元素的输入或单击。

可以说,插件代码对我来说几乎没有任何意义:D但是为了使其快速工作以忽略选择框,您可以用以下内容替换它的onSelectionChange

原始function

 var onSelectionChange = function() { $(this).dirtyForms('setDirty'); } 

新版本

 var onSelectionChange = function () { //this is the new line. self explanatory if ($(this).hasClass($.DirtyForms.ignoreClass)) return; $(this).dirtyForms('setDirty'); } 

在此之后,您应该依靠原始开发人员进行适当的修复。 我刚刚发布了这个作为答案,因为评论中有空格