knockout.validation是一个基于knockout.js的验证插件,通常验证模式以下:javascript
var viewModel = function (Data) { var self = this; self.OtherMoney = ko.observable().extend({ required: true, pattern: { params: /^\d+[\.]?\d{0,2}$/g, message: "必须是数字,而且最多两位小数!" } }); self.PaymentList = ko.observableArray(); $.each(Data, function (n, value) { self.PaymentList.push({ Id: ko.observable(value.Id), NowClaimAmount: ko.observable(0), }) }) //保存 self.Save = function () { self.errors = ko.validation.group(self); if (self.errors().length > 0) return; $.ajax({ }); } }
可是若是咱们要验证 self.PaymentList数组里的元素时, self.errors = ko.validation.group(self)这个是获取不到数组里面的错误信息的,这时候须要加{deep: true }才能够,代码以下:java
var viewModel = function (Data) { var self = this; self.OtherMoney = ko.observable().extend({ required: false, pattern: { params: /^\d+[\.]?\d{0,2}$/g, message: "必须是数字,而且最多两位小数!" } }); self.PaymentList = ko.observableArray(); $.each(Data, function (n, value) { self.PaymentList.push({ Id: ko.observable(value.Id), NowClaimAmount: ko.observable(0).extend({ required: true, pattern: { params: /^\d+[\.]?\d{0,2}$/g, message: "必须是数字,而且最多两位小数!" } }), }) }) //保存 self.Save = function () { self.errors = ko.validation.group(self, { deep: true }); if (self.errors().length > 0) return; $.ajax({ }); } }