自定义淘汰赛验证3参数

达里尔

我想创建一个自定义的剔除验证规则,该规则将采用当前可观察值的值,与其进行比较的值以及有条件的值。

我在网上看到的所有示例都只有两个参数传递到自定义验证中。

我做了一个变通办法,将带有要比较的值和条件的值传递给数组,但这有点笨拙。我的消息格式也将输出数组中的值,而不仅仅是输出otherVal

例如:

/*
* Compares two values only if the specified condition is true.
* Parameters: 
*   array[0] - otherVal
*   array[1] - conditional
*
* Returns:
*   true if the condition is false.
*   true if the condition is true AND val is lessThanOrEqualTo otherVal
*   false otherwise
*
* Usage:
*   Used to validate observables conditionally.
*
* Example:
*   self.salary = ko.observable().extend({ 
                      mustLessThanOrEqualConditional: [100, isFieldEditable]})
*/
ko.validation.rules['mustLessThanOrEqualConditional'] = {
  validator: function(val, array) {
      if (array[1]) {
          return val <= array[0];
      }
      return true;
  },
  message: 'The field must be <= {0}'
};

有没有一种方法可以将三个参数传递给验证函数,例如:

ko.validation.rules['mustLessThanOrEqualConditional'] = {
    validator: function(val, otherVal, condition) {
        if(condition){
            return val <= otherVal;
        }
        return true;
    },
    message: 'The field must be <= {0}'
}

Array可以使用对象来代替

ko.validation.rules['mustLessThanOrEqualConditional'] = {
  validator: function(val, params) {
      if (params.condition) {
          return val <= params.otherVal;
      }
      return true;
  },
  message: 'The field must be <= {0}'
};

model.obs.extend({ mustLessThanOrEqualConditional: {
                       params: { otherVal: 3, condition: 1 != 0 }
                   }
                });

尽管在您的情况下,我还是建议使用onlyIf功能性:

ko.validation.rules['mustLessThanOrEqualConditional'] = {
  validator: function(val, params) {
      return val <= params.otherVal;
  },
  message: 'The field must be <= {0}'
};

model.obs.extend({ mustLessThanOrEqualConditional: {
                       onlyIf: function () { /* your test here */ },
                       params: { otherVal: 3 }
                   }
                });

由于我是一个非常友好的人,因此我使用以下规则:

ko.validation.rules['compareTo'] = {
    message: "Compare to",
    validator: function (val, params) {
        if (val === null || params.value() === null)
            return params.allowNull;
        switch (params.way) {
            case "<": return val < params.value();
            case "<=": return val <= params.value();
            case ">": return val > params.value();
            case ">=": return val >= params.value();
            default: throw new Error("params is not well defined");
        }
    }
}

model.obs.extend({ compareTo: { 
                       message:"your message", 
                       params: { 
                                   way: ">=", 
                                   value: model.otherObs, 
                                   allowNull: true 
                       }, 
                       onlyIf: function () { /*your test*/ } 
                    }});

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

minLength淘汰赛验证的自定义错误消息

来自分类Dev

淘汰赛验证-自定义验证程序未显示消息

来自分类Dev

淘汰赛自定义绑定更新未触发

来自分类Dev

淘汰赛自定义组件未更新

来自分类Dev

什么是淘汰赛自定义绑定“之后”变量?

来自分类Dev

淘汰赛自定义绑定处理程序:$ root是未定义的

来自分类Dev

无法在淘汰赛3.2中传递带有自定义组件的变量

来自分类Dev

淘汰赛-jQuery选择器在自定义绑定中不起作用

来自分类Dev

淘汰赛:如何从自定义绑定更新另一个绑定?

来自分类Dev

淘汰赛3.2:组件/自定义元素可以包含子内容吗?

来自分类Dev

淘汰赛:将绑定动态添加到自定义元素

来自分类Dev

当JQuery元素更新时,淘汰赛JS自定义绑定不会更新

来自分类Dev

淘汰赛自定义bindingHandler无法在附加元素上应用Bindings

来自分类Dev

MVC 4-淘汰赛自定义绑定和日期格式

来自分类Dev

用FuelUX树订阅可观察到自定义Jquery事件的淘汰赛

来自分类Dev

淘汰赛自定义bindingHandler无法在附加元素上应用Bindings

来自分类Dev

淘汰赛数据绑定未在选择绑定的自定义事件上更新

来自分类Dev

无法在淘汰赛3.2中传递带有自定义组件的变量

来自分类Dev

淘汰赛中的基础工具自定义绑定工具提示

来自分类Dev

如何将自定义模型类型分配给淘汰赛 observable?

来自分类Dev

使用 jquery 的淘汰赛自动完成不允许选择自定义值

来自分类Dev

TypeScript 和淘汰赛自定义活页夹

来自分类Dev

淘汰赛验证 - 动态验证消息

来自分类Dev

淘汰赛验证组错误

来自分类Dev

淘汰赛验证组错误检查

来自分类Dev

淘汰赛 js 传递视图参数

来自分类Dev

Twitter Bootstrap 3模态与淘汰赛

来自分类Dev

淘汰赛-是否可以将标准选择绑定与自定义绑定结合在一起?

来自分类Dev

淘汰赛验证-输入验证其他字段

Related 相关文章

  1. 1

    minLength淘汰赛验证的自定义错误消息

  2. 2

    淘汰赛验证-自定义验证程序未显示消息

  3. 3

    淘汰赛自定义绑定更新未触发

  4. 4

    淘汰赛自定义组件未更新

  5. 5

    什么是淘汰赛自定义绑定“之后”变量?

  6. 6

    淘汰赛自定义绑定处理程序:$ root是未定义的

  7. 7

    无法在淘汰赛3.2中传递带有自定义组件的变量

  8. 8

    淘汰赛-jQuery选择器在自定义绑定中不起作用

  9. 9

    淘汰赛:如何从自定义绑定更新另一个绑定?

  10. 10

    淘汰赛3.2:组件/自定义元素可以包含子内容吗?

  11. 11

    淘汰赛:将绑定动态添加到自定义元素

  12. 12

    当JQuery元素更新时,淘汰赛JS自定义绑定不会更新

  13. 13

    淘汰赛自定义bindingHandler无法在附加元素上应用Bindings

  14. 14

    MVC 4-淘汰赛自定义绑定和日期格式

  15. 15

    用FuelUX树订阅可观察到自定义Jquery事件的淘汰赛

  16. 16

    淘汰赛自定义bindingHandler无法在附加元素上应用Bindings

  17. 17

    淘汰赛数据绑定未在选择绑定的自定义事件上更新

  18. 18

    无法在淘汰赛3.2中传递带有自定义组件的变量

  19. 19

    淘汰赛中的基础工具自定义绑定工具提示

  20. 20

    如何将自定义模型类型分配给淘汰赛 observable?

  21. 21

    使用 jquery 的淘汰赛自动完成不允许选择自定义值

  22. 22

    TypeScript 和淘汰赛自定义活页夹

  23. 23

    淘汰赛验证 - 动态验证消息

  24. 24

    淘汰赛验证组错误

  25. 25

    淘汰赛验证组错误检查

  26. 26

    淘汰赛 js 传递视图参数

  27. 27

    Twitter Bootstrap 3模态与淘汰赛

  28. 28

    淘汰赛-是否可以将标准选择绑定与自定义绑定结合在一起?

  29. 29

    淘汰赛验证-输入验证其他字段

热门标签

归档