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

时间:2014-05-15 13:12:27

标签: javascript jquery jquery-dirtyforms

我正在使用此$('form').dirtyForms(); ignoreDirty来检查我的表单是否脏。但是,在我的页面上,我有一些仅用于过滤的下拉列表(它们不应该使我的表单“脏”)。现在,当我选择其中任何一个下拉列表时,它会导致我的表单变脏。使用jquery.dirtyforms(我阅读他们的文档但不知道如何),如何通过类名排除选择器(下拉列表,文本框等),以便它们不会将表单标记为脏。

我尝试了各种各样的事情,例如为这些下拉列表/过滤器分配一个名为$('form').dirtyForms().ignoreClass('ignoreDirty');的类,然后在我的jquery中我这样做了:

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

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

ignoreDirty

但是这仍然会使我的表单变脏,因为任何类名仍为{{1}}的控件 请注意这些过滤器会导致回发,但我可以说我转到我的表单并且没有进行任何更改。我开始点击这些过滤器,他们回发的那一刻发生了这种情况:

enter image description here

2 个答案:

答案 0 :(得分:2)

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

原创功能

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');
}

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

答案 1 :(得分:0)

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

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

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

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

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