我正在使用此$('form').dirtyForms();
ignoreDirty
来检查我的表单是否脏。但是,在我的页面上,我有一些仅用于过滤的下拉列表(它们不应该使我的表单“脏”)。现在,当我选择其中任何一个下拉列表时,它会导致我的表单变脏。使用jquery.dirtyforms(我阅读他们的文档但不知道如何),如何通过类名排除选择器(下拉列表,文本框等),以便它们不会将表单标记为脏。
我尝试了各种各样的事情,例如为这些下拉列表/过滤器分配一个名为$('form').dirtyForms().ignoreClass('ignoreDirty');
的类,然后在我的jquery中我这样做了:
$('form').dirtyForms({ ignoreClass : "ignoreDirty" });
这会产生错误,所以我一定做错了。 注意我也尝试通过属性设置它:
ignoreDirty
但是这仍然会使我的表单变脏,因为任何类名仍为{{1}}的控件 请注意这些过滤器会导致回发,但我可以说我转到我的表单并且没有进行任何更改。我开始点击这些过滤器,他们回发的那一刻发生了这种情况:
答案 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
设置为ignoredirty
。 ignoredirty
是默认值,因此没有理由进行设置。但是,如果您确实需要将其设置为其他内容,则可以使用以下语法执行此操作:
$.DirtyForms.ignoreClass = 'my-ignore-class';
其次,在版本1.0.0中,ignoreClass
仅适用于超链接。此行为已修改为与1.1.0版中的输入和选择元素一起使用。
在1.2.0版中,您现在还可以将ignoreClass设置为父容器元素,以忽略来自其中任何元素的输入或点击。