javascript - 两个相互依赖的字段的 knockout validation

标签 javascript knockout.js knockout-validation

考虑以下代码 -

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/

相关文章:

javascript - 显示模糊文本框的错误消息

jquery - 使用 Knockout 验证插件时 Knockout ViewModel isValid 错误

javascript - 在 Jquery Ui Datepicker 中禁用今天之后的 future 日期

javascript - 这两个 JavaScript 作用域链示例有什么区别?

javascript - C# 中是否有一个knockoutjs 计算等效项?

javascript - Knockout.js - 值更新 : afterkeydown too fast

javascript - 更新数据时保留并提示排序顺序?

javascript - 消息显示之外的 knockout validation

javascript - 此类的语法是否正确,工作不正确,脚本错误。 (: line 0) (javascript p5.js)

javascript - 将第三方视频集成到 Web 应用程序中