knockout.validation 验证数组里的元素

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({
        });
    }
}
相关文章
相关标签/搜索