javascript - Knockout-Validation validatedObservable 在需要使用时始终有效 :{onlyIf:. ..}

标签 javascript validation knockout.js single-page-application knockout-validation

我正在使用 Knockout-Validation在我的项目中。 我有模型,如果问题回答是,我需要确保提供详细信息:

function Model() {
    'use strict';
    var self = this;
    self.question1 = ko.observable(false);
    self.question1Details = ko.observable('');
    self.question1Details.extend({
        required: {
            onlyIf: function () { 
                return self.question1() === true;
            }
        }
    });
}

比起我这样使用它:

var model = ko.validatedObservable(new Model());

但无论我做什么,model.isValid() 始终为真。即使 model().question1Details.isValid() 为假。

我试着指定

ko.validation.init({ grouping : { deep: true, observable: true }, insertMessages:true }, true);

但这并没有帮助。

有趣的是,如果我将验证规则更改为:

self.question1Details.extend({
            required: true
            }
        });

它工作正常。所以我怀疑 onlyIf 有问题,或者我用错了。

最佳答案

var self=this;
self.question1 = ko.observable(false);
self.question1Details = ko.observable('');
self.question1Details.extend({
    required: {
        onlyIf: function () { return self.question1()===true;}
     }
});

Fiddle Demo

关于javascript - Knockout-Validation validatedObservable 在需要使用时始终有效 :{onlyIf:. ..},我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22341975/

相关文章:

javascript - 在函数字符串上使用 eval

javascript - 在 AngularJS 中使用外部库(灯箱)

javascript - 使用 Formik 自动调整大小?

javascript - JavaScript 中的高级表单验证

javascript - 如何限制特殊字符和 (/,*,+) only

javascript - 在 vue 事件中将参数作为引用传递 (@input)

ruby - 用于验证仅包含字符(没有特殊字符但带有重音字符)、空格和数字的字符串的正则表达式

javascript - PagerJS page-href 链接到带有参数的页面

javascript - knockout js,向数组添加额外元素

knockout.js - 刷新 Breeze 中的导航属性