knockout.js 清除敲除验证错误

drkbr07n  于 2022-11-10  发布在  其他
关注(0)|答案(5)|浏览(142)

我有一个页面设置与Knockout.js和使用敲除验证。
在页面加载过程中,我在一个选择框上放置了另一个插件,它会触发一个更改,它会触发验证。我需要能够使用JS清除该错误,这样我就可以从一个新的界面开始,并对表单帖子或选择框更改给予反馈。
我找不到任何可让我清除Knockout-Validation中错误的项目。

bgtovc5b

bgtovc5b1#

可能一个更好的方法是遵循敲除验证中已经实现的方法,即property.isModified(false);
如果您有一个完整的视图模型要重置,只需遍历所有已验证的属性并调用isModified(false)即可
请参阅comment from Eric Barnard here
希望能有所帮助

1hdlvixo

1hdlvixo2#

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

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

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

rqenqsqc

rqenqsqc3#

通过实施此拉取请求找到了答案。
https://github.com/Knockout-Contrib/Knockout-Validation/pull/184
提供我所需的功能。

cngwdvgl

cngwdvgl4#

解决这个问题的一个方法是使用一个自定义的验证器,在这个验证器中,你可以检查视图模型中的一个标志,比如“ignoreValidation”,如果这个标志为真,那么你就让验证器通过。
验证器的示例如下:

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

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

watbbzwu5#

如果使用实体管理器,请确保在验证中不包括entityAspect,因为它连接到所有其他实体。

相关问题