清除敲除验证错误

Posted

技术标签:

【中文标题】清除敲除验证错误【英文标题】:Clear error on Knockout-Validation 【发布时间】:2012-11-23 09:45:53 【问题描述】:

我有一个使用 Knockout.js 并使用 Knockout-Validation 的页面设置。

在页面加载期间,我将另一个插件放在触发更改的选择框中,从而触发验证。我需要能够使用 JS 清除该错误,以便我可以从一个全新的 UI 开始,并就表单发布或选择框更改提供反馈。

我找不到任何可以清除敲除验证中的错误的内容。

【问题讨论】:

【参考方案1】:

在淘汰验证中已经实现的一个更好的方法可能是说property.isModified(false);

如果您要重置整个视图模型,只需遍历所有已验证的属性并调用 isModified(false)

见comment from Eric Barnard here

希望有帮助

【讨论】:

谢谢。此外,这对其他人来说可能很明显,但是您必须在清除该字段后执行此操作。示例:_thisComment(''); _this.Comment.isModified(false)。轻松验证重置。 这正是showAllMessages(false) 在内部所做的,正如@yoann 所回答的那样【参考方案2】:

迟到的答案,但如果有人需要:

// assuming the ko.observable on the checkbox is called propBoolean
var propBooleanlValid = ko.validation.group(self.propBoolean,  deep: false );
propBooleanlValid .showAllMessages(false);

它将隐藏消息直到下一次验证。

【讨论】:

这很好用,谢谢!这应该在 ko 验证文档中。 注意:确保您的配置中有messagesOnModified: true。如果为假,则消息将始终显示 我觉得这是三个中最好的【参考方案3】:

通过实现这个拉取请求找到了答案。

https://github.com/Knockout-Contrib/Knockout-Validation/pull/184

提供我需要的功能。

【讨论】:

不要冒犯,但我觉得这个答案不是人们在需要此功能时应该采取的行动。我的反对意见从何而来。不过我赞成你的问题,这是一个很好的问题! :)【参考方案4】:

解决此问题的一种方法是使用自定义验证器,您可以在其中检查视图模型中的标志,例如“ignoreValidation”。如果该标志为真,则让验证器通过。

验证器的外观示例:

viewmodel.userHasPremiumMembership.extend(
    validation: [
        
            validator: function () 
                if (viewmodel.ignoreValidation) 
                    return true;
                

                return viewmodel.userHasPremiumMembership();
            ,
            message: 'User needs to have premium membership.'
        
    ]
);

【讨论】:

【参考方案5】:

如果您使用实体管理器,请确保不要在验证中包含 entityAspect,因为它连接到所有其他实体。另见 How to rollback knockout validation errors?

【讨论】:

以上是关于清除敲除验证错误的主要内容,如果未能解决你的问题,请参考以下文章

导航返回时不清除文本输入并验证错误消息

输入空时jQuery文本输入实时验证清除错误[重复]

清除 Kendo Validator 错误消息

即使输入有效,错误提供程序也不会自行清除

Rails 验证后如何清除表单

java 如果在Action阶段执行验证,则在Render阶段将@ModelAttribute作为参数清除验证错误,