考虑以下代码 -
var MyObjectModel = function(myObject){
var self = this;
self.myNumber1 = ko.observable(myObject.number1).trimmed();
self.myNumber2 = ko.observable(myObject.number2).trimmed();
我想扩展 myNumber1 和 myNumber2,以添加 knockout validation ,以便在两者均为空时抛出错误,并在其中一个有值时保持正常。
知道如何实现这一目标吗?
最佳答案
您可以使用 ko.computed 创建一个函数,该函数检查是否至少设置了两个字段中的任何一个,并且在验证中有条件地执行验证。
var MyObjectModel = function (myObject) {
var self = this;
self.myNumber1 = ko.observable(myObject.number1);
self.myNumber2 = ko.observable(myObject.number2);
self.numbersHaveNoValue = ko.computed(function () {
var value1 = self.myNumber1(), value2 = self.myNumber2();
return !ko.validation.rules.required.validator(value1, true) &&
!ko.validation.rules.required.validator(value2, true);
});
self.myNumber1.extend({ required: { onlyIf: self.numbersHaveNoValue }});
self.myNumber2.extend({ required: { onlyIf: self.numbersHaveNoValue }});
}
我创建了一个 fiddle :http://jsfiddle.net/delixfe/aBytt/
关于javascript - 两个相互依赖的字段的 knockout validation ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14331948/