1

我有一个虚拟机,它有多种形式的所有验证。为了支持多种形式,我认为我必须实施淘汰赛可选验证。我的表单中有很多验证。像maxLength, minlength,required和一个自定义验证。

验证看起来像这样

@password = ko.observable("").extend({ required: true, minLength: 5})
@current_password = ko.observable().extend({
      validation: { validator: @mustEqual, message: 'Passwords do not match.', params: @password }
    })

现在,为了使上述验证成为可选,isLoggedIn我使用了这个

@password  = ko.observable().extend
  required:
    onlyIf: () =>
      !@isLoggedIn()

但它只适用于required. 我也想要它minLengthcustom validator怎么做 ?

4

1 回答 1

3

onlyIf 可以与所有验证器一起使用,就像这样(小提琴,来自 github 示例:http: //jsfiddle.net/LYP5u/25/):

 self.testField = ko.observable(5).extend({
        max:{
            onlyIf:function() { return self.country() === 'US'},
            params:5
        }
    });

来自验证源的示例:https ://github.com/Knockout-Contrib/Knockout-Validation/blob/master/Src/api.js#L225

条件验证文档:https ://github.com/Knockout-Contrib/Knockout-Validation/wiki/Conditional-Validation-with-onlyIf-parameter

也许我们应该与其中一位维护人员交谈以在手册中更清楚地说明这一点,也许在此页面https://github.com/Knockout-Contrib/Knockout-Validation/wiki/Native-Rules添加一些带有 onlyIf 的示例

于 2013-11-06T21:51:10.193 回答