Knockout-Validation清除错误

时间:2012-12-05 14:26:22

标签: knockout.js knockout-validation

我使用Knockout.js进行页面设置并使用Knockout-Validation。

在页面加载期间,我在选择框上放置了另一个插件,该选项框会触发更改,从而触发验证。我需要能够使用JS清除该错误,因此我可以从一个外观新鲜的用户界面开始,并在表单帖子上提供反馈或选择更改框。

我找不到任何允许我在Knockout-Validation中清除错误的内容。

5 个答案:

答案 0 :(得分:30)

可能更好的方法是遵循已经在淘汰赛验证中实施的内容来说property.isModified(false);

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

请参阅comment from Eric Barnard here

希望有所帮助

答案 1 :(得分:24)

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

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

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

答案 2 :(得分:4)

通过实施此拉取请求找到答案。

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

给我我需要的功能。

答案 3 :(得分:1)

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

该验证器的外观示例:

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

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

答案 4 :(得分:0)

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