淘汰赛验证问题

时间:2013-04-02 10:36:29

标签: validation knockout.js numeric custom-errors

我的敲除模型验证存在以下问题,但不确定如何解决它们。以下是我的模型,首先是验证规则:

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()可观察,我想将它限制为两个小数点,所以我创建了验证扩展器'numeric'但它不起作用。我如何使用它以及如何纠正它有什么不对吗?

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

3)当我使用条件定义规则时(即Username()),如何为其定义自定义消息?我能够为默认规则执行此操作,但使用条件规则,它无法正常工作

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

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

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

提前致谢

1 个答案:

答案 0 :(得分:0)

我没有在你的代码中潜水,而是为你的问题创建了一个小型的小型演示。好的,我们走了,

  

1)ID()可观察,我想将它限制为两个小数点......和2)另外,如果我想将一个observable限制为整数....

你的1和2问题非常相似,所以我在一个小提琴中覆盖了这两个问题。 Check this fiddle

  

3)当我使用条件(即Username())定义规则时,如何定义自定义消息....

您可以使用message属性设置自定义消息Check this fiddle

  

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

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

  

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

我已经在您的how to? with knockout js validations问题(检查更新)中给出了这个问题。

让我知道它是否有帮助!