2013-04-05 164 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()來檢查每個情況,那麼它不應該在第一次出現時返回。