0

我的淘汰赛模型验证存在以下问题,不知道如何解决。首先是我的模型,带有验证规则:

var Data = function (data) {
this.Val = data;
}

function ViewModel(item) {
var parse = JSON.parse(item.d);
var self = this;
this.Name = ko.observable(parse.Name);
this.UserType = ko.observable(parse.UserType);
this.ID = ko.observable(parse.ID).extend({ required: { params: true, message: "ID is    required" }, decimal: { params: 2, message: "Should be decimal"} });
this.Username = ko.observable(parsed.Username).extend({ required: {
        onlyIf: function () {
            return self.UserType() > 1;
        }
    }   
});

this.WeeklyData = ko.observableArray([]);
var records = $.map(parse.WeeklyData, function (data) { return new Data(data) });
this.WeeklyData(records);
this.WeeklyData2 = ko.observableArray([]);
var records = $.map(parse.WeeklyData2, function (data) { return new Data(data) });
this.WeeklyData2(records);
}

ko.extenders.numeric = function (target, precision) {
var result = ko.dependentObservable({
    read: function () {
        return target().toFixed(precision);
    },
    write: target
});

result.raw = target;
return result;
};

这是我的问题:

1) 对于可观察的 ID(),我想将其限制为两个小数点,因此我创建了验证扩展器“数字”,但它不起作用。我如何使用它以及如何纠正它有什么问题吗?

2)另外,如果我想将一个可观察对象限制为整数,我该怎么做?

3)当我定义一个带有条件的规则时,(即用户名()),我如何定义一个自定义消息?我能够为默认规则做到这一点,但使用条件规则,它不起作用

4) 我有两个可观察的数组 WeeklyData1 和 WeeklyData2 都包含 Data() 对象。我想为这两个设置单独的最小/最大规则,例如,WeeklyData1 的 min/max - 1,7 和 WeeklyData2 的 min/max - 1,150。我怎样才能完成它?

4)现在我的错误消息出现在数据字段旁边,但我希望所有这些都出现在一个验证摘要中,同时针对该字段显示“*”。有人告诉我使用Validation-bindings,但我不确定如何使用它,有人可以举个例子吗?

我知道这是很多问题,但如果有人可以提供帮助,我将不胜感激。

提前致谢

4

1 回答 1

0

我没有深入研究您的代码,而是为您的问题创建了一个小型演示。好的,我们开始吧,

1)对于可观察的 ID(),我想将其限制为两个小数点......和 ​​2)另外,如果我想将可观察的限制为整数......

您的 1 和 2 问题非常相似,所以我在一个小提琴中涵盖了这两个问题。检查这个小提琴

3)当我定义一个带有条件的规则时,(即用户名()),我如何定义一个自定义消息....

您可以使用message属性来设置自定义消息,检查这个小提琴

4) 我有两个可观察的数组 WeeklyData1 和 WeeklyData2 都包含 Data() 对象

我不清楚这个问题是什么,这两个数组都包含什么类型的数据以及您想要设置的最小/最大规则(数组长度或其他)。所以请清除这一点,而不是我会尽力帮助解决这个问题。

5)现在我的错误消息出现在数据字段旁边......

这个问题的答案我已经在你的how to中给出了?带有淘汰赛 js 验证问题(检查更新)。

让我知道它是否有帮助!

于 2013-04-02T17:24:18.473 回答