结合两个可观察量的KnockoutJS验证?

时间:2017-05-10 14:31:25

标签: javascript validation knockout.js

我有以下用户界面:

ui of form

我们对与其频率相关的收入进行限制。例如,如果选择月度,则用户可以输入的最大值为999999.99,但是,如果选择每两周 ,则用户可输入的最大值为499999.99

如何使用KnockoutJS及其验证库(Knockout-Validation)实现此目的?

现在,我有以下内容:

self.validate = ko.validatedObservable([
  self.usualTakeHomePayAmount.extend({
    min: {
      params: 0,
      message: minCurrencyAmountErrorMessage.toString()
    },
    max: {
      params: 999999.99,
      message: maxCurrencyAmountErrorMessage.toString()
    }
  })]);

但显然没有考虑频率字段(屏幕截图中标题为How often。)

如何实现所需的验证?

1 个答案:

答案 0 :(得分:0)

您可以创建一个计算器,根据所选频率返回最大值,然后使用它。

self.maxValue = ko.pureComputed(function() {
    switch(self.selectedFrequency())
        case "fortnightly":
            return 499999.99
        case "monthly":
            return 999999.99
        default:
            return 999999.99
});

然后在需要引用最大值的地方使用此计算值:

self.validate = ko.validatedObservable([
    self.usualTakeHomePayAmount.extend({
        min: {
            params: 0,
            message: minCurrencyAmountErrorMessage.toString()
        },
        max: {
            params: self.maxValue(),
            message: maxCurrencyAmountErrorMessage.toString()
        }
})]);

我假设你在一个名为selectedFrequency的可观察对象中有频率。我没有测试任何这个,但希望它能让你了解一种可以采取的方法。