3

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

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

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

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

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

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

在此处输入图像描述

4

2 回答 2

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

在此之后,您应该依靠原始开发人员进行适当的修复。由于评论中有空格,我只是将其发布为答案

于 2014-05-15T14:17:14.347 回答
0

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

首先,您正在尝试将 设置ignoreClassignoredirtyignoredirty是默认值,所以没有理由设置它。但是,如果您确实需要将其设置为其他内容,则可以使用以下语法进行设置:

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

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

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

于 2015-07-28T10:18:12.510 回答