16

I have a page setup with Knockout.js and using Knockout-Validation.

During the page load I put another plugin on a select box which fires a change, which fires the validation. I need to be able to clear that error using JS so I can start with a fresh looking UI and give feedback on the form post or select box change.

I can't find anything that allows me to clear an error in Knockout-Validation.

4

5 回答 5

31

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

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

在此处查看Eric Barnard 的评论

希望有帮助

于 2013-01-24T21:51:55.357 回答
25

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

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

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

于 2013-06-06T04:46:29.480 回答
4

通过实现这个 Pull Request 找到了答案。

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

给了我我需要的功能。

于 2012-12-05T16:20:31.560 回答
1

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

该验证器的外观示例:

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

                return viewmodel.userHasPremiumMembership();
            },
            message: 'User needs to have premium membership.'
        }
    ]
});
于 2020-12-01T13:22:58.160 回答
0

如果您使用实体管理器,请确保在验证中不包含 entityAspect,因为它连接到所有其他实体。另请参阅 如何回滚淘汰验证错误?

于 2016-07-14T11:06:47.500 回答