带有dirtyforms jQuery插件的DropDownList

Posted

技术标签:

【中文标题】带有dirtyforms jQuery插件的DropDownList【英文标题】:DropDownList with dirtyforms jQuery plugin 【发布时间】:2013-01-09 12:48:47 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

我对 kendo-ui 或dirtyForms 一无所知,所以我会尽力通过查看 API 来回答这个问题。 kendo-ui DropDownList 有一个change event,它看起来只有在 DropDownList 中的输入发生更改时才会被触发。此外,dirtyForms 还为您提供 manually setting the form to dirty。将两者放在一起,我猜以下应该可行。

$("#dropdownlist").kendoDropDownList(
    change: function(e) 
        $('form').dirtyForms('setDirty');
    
);

编辑:由于您似乎希望这会影响所有 DropDownList,您可以执行以下操作。

kendo.ui.DropDownList.fn._change = function(e) 
    if(this.element && this.element.form)
        $(this.element.form).dirtyForms('setDirty');

这似乎有点骇人听闻,但我不确定是否会推荐这样做。它可能会破坏其他东西。

【讨论】:

嗨,你是对的,这就是我设法做到这一点的方法,但你不觉得在所有 DropDownLists 上这样做有点难看吗? 查看我的编辑。它可能对你有用;但话又说回来,我不确定我会推荐它。【参考方案2】:

这听起来像是在 pull request 27 中修复的错误,它允许跨浏览器与选择元素兼容。

或者,可能是您的标记中没有properly ignored all of the 3rd party widgets on the page 和have anchor elements。

【讨论】:

以上是关于带有dirtyforms jQuery插件的DropDownList的主要内容,如果未能解决你的问题,请参考以下文章

强制检查dirtyforms.js

DirtyForms 与 jQuery Validate 的 submitHandler() 方法一起使用时无法正常工作

DirtyForms 不适用于输入隐藏字段

DirtyForms 不能与 $.blockUI 一起正常工作

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

打开和关闭模式后,Dirtyforms 停止工作