强制检查dirtyforms.js

Posted

技术标签:

【中文标题】强制检查dirtyforms.js【英文标题】:Force check dirtyforms.js 【发布时间】:2015-12-12 06:38:24 【问题描述】:

我正在尝试在选项卡之间切换时检查表单是否脏 - 如果表单脏,则显示警报。

我正在使用这个插件:https://github.com/snikch/jquery.dirtyforms

Ii 在尝试转到外部页面时工作正常(在这里我会收到警告),但是当我在选项卡(引导程序)之间切换时,什么也没有发生。我已经制作了一个特殊的类(“.chkChange”)来听表单是否脏了,但是当我点击一个选项卡时没有任何反应。选项卡如下所示:

<li class="setup-conditions"><a data-toggle="tab" class="chkChange" href="#setup-conditions">Procedure</a></li>

我可以使用这个 sn-p 检查表单是否脏,但我需要帮助来触发脏表单中的警报构建:

$('#myTab li a').click(function () 
    if ($('form').dirtyForms('isDirty')) 
        //alert("Form is dirty");
    
);

就像我说的,如果我将同一个类放在另一个(外部)链接上,它会提示是否有任何更改 - 机器人不在选项卡上。

【问题讨论】:

【参考方案1】:

在这种情况下,您可以customize the event binding 将点击处理程序附加到您的链接。

$(document).bind('bind.dirtyforms', function (ev, events) 
    var originalBind = events.bind;

    events.bind = function (e) 
        $('#myTab li a').on('click', events.onAnchorClick);
        originalBind(e);
    ;
);

然后脏表单会正确

    检查表单是否脏 如果脏了,阻止点击事件 显示对话框 如果用户决定继续,将重新触发点击事件

Dirty Forms 会自动忽略您的锚标记,因为它没有 HREF 标记。这是一个由社区贡献的功能,我现在正在重新考虑,因为显然有一个论点来监控有时没有 HREF 的锚标记。

更新

2.0.0-beta00005 中的默认行为已更改为默认包含没有 HREF 标记的链接。那应该可以解决此问题,因此您无需附加该事件。但是,根据您使用的库,您可能需要将 ignoreSelector 添加到 Dirty Forms 以停止观看它们。

$('form').dirtyForms( ignoreSelector: 'a.some-class:not([href])' );

【讨论】:

以上是关于强制检查dirtyforms.js的主要内容,如果未能解决你的问题,请参考以下文章

我应该强制 Python 类型检查吗?

未经检查的强制转换:尝试在同一方法中将 Int 或 String 强制转换为 T(泛型类型)

如何检查 Prismatic Sc​​hema 强制期间引发的 ValidationError?

未强制执行唯一约束检查

QuickBlox 如何检查 QBChat/didDisconnect 以强制用户再次登录?

node.js 中间件检查强制参数