如何在knockout js中验证至少有一个字段必须填写

How to validate in knockout js for at least one field must be filled

我有 4 个字段,每个字段都有自己的自定义验证,但不是必需的。我将如何进行验证以便至少必须填写一个字段。

self = this;

self.acc = ko.observable().extend({ acc: true });
self.Id = ko.observable().extend({ id: true });
self.Name= ko.observable().extend({ name: true });
self.Number = ko.observable().extend({ number: true});

我知道 required 扩展程序有 onlyIf,但我不确定这是否是处理此类验证的正确方法。

在这种情况下,我只是做了一个单独的计算来做这样的特殊验证。此计算可用于 enable/disable 提交表单的能力,或者你有什么。

self.atLeastOneFilled = ko.computed(function(){
    // note: number will need a different validation if zero is allowed (null check, for example)
    return self.acc() || self.Id() || self.Name() || self.Number();

});