【问题标题】:Knockout Validation of two interdependent fields两个相互依赖的字段的淘汰赛验证
【发布时间】:2012-12-29 05:02:23
【问题描述】:

考虑下面这段代码 -

var MyObjectModel = function(myObject){
var self = this;
self.myNumber1 = ko.observable(myObject.number1).trimmed();
self.myNumber2 = ko.observable(myObject.number2).trimmed();

我想扩展 myNumber1 和 myNumber2,以添加淘汰赛验证,这样如果两者都为空,它会引发错误,并且如果其中一个有值则保持正常。

知道如何实现这一目标吗?

【问题讨论】:

    标签: javascript knockout.js knockout-validation


    【解决方案1】:

    您可以使用 ko.computed 创建一个函数,该函数检查是否至少设置了两个字段中的任何一个,并且 onlyIf 在验证中以有条件地执行验证。

    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 }});
    }
    

    我创建了一个小提琴:http://jsfiddle.net/delixfe/aBytt/

    【讨论】:

    • 我希望这能帮助我解决当前的问题,但小提琴似乎不见了
    • 我不确定,但我想在 myNumber1myNumber2 验证中使用 ...required.validator(value1, true) 会出错
    • @AndreasNiedermair 已修复 :)
    【解决方案2】:
    var MyObjectModel = function(myObject) {
        var self = this;
        self.myNumber1 = ko.observable(myObject.number1).trimmed();
        self.myNumber2 = ko.observable(myObject.number2).trimmed();
    
        self.numberCount = ko.computed(function() {
            var count = 0;
            count += self.myNumber1() != '' ? 1 : 0;
            count += self.myNumber2() != '' ? 1 : 0;
            return count;
        }).extend({min:1});
    }
    

    【讨论】:

      猜你喜欢
      • 2013-01-12
      • 2016-12-31
      • 2012-02-18
      • 2015-07-01
      • 2014-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-10
      相关资源
      最近更新 更多