2013-04-05 90 views
1

我试图在可观察数组下面定义多个自定义验证规则,我指的是https://github.com/ericmbarnard/Knockout-Validation/wiki/Custom-Validation-Rules可观察阵列上的多个基因敲除验证器

以下是我observablearray与审定电话:

this.WeeklyData = ko.observableArray([]).extend({ 
    validation: [ 
     { 
      validator : fminIncrements, 
      message: 'use 15 min increments' 
     }, 
     { 
      validator: ValidateMinMax, 
      message: "Invalid min/max value" 
     } 
    ] 
    }); 

var ValidateMinMax = function (valueArray) { 
var check = true; 
ko.utils.arrayFirst(valueArray, function (value) { 
    if (parseInt(value.Val(), 10) < 0 || parseInt(value.Val(), 10) > 168) { 
     check = false; 
     return true; 
    } 
}); 
return check; 
}; 

var fminIncrements = function (valueArray) { 
var check = true; 
ko.utils.arrayFirst(valueArray, function (value) { 
    if (parseInt(value.Val(), 10) % 15 !== 0) { 
     check = false; 
     return true; 
    } 
}); 
return check; 
}; 

当我这样做只是第一条规则火灾。我调试过了,它甚至没有打到第二个。任何想法?

在此先感谢您的帮助。

回答

1

我相信它是因为你使用的是ko.utils.arrayFirst()。如果您使用ko.utils.arrayForEach()来检查每个情况,那么它不应该在第一次出现时返回。