【问题标题】:Knockout minLength with empty string allowed允许使用空字符串淘汰 minLength
【发布时间】:2013-01-14 18:11:05
【问题描述】:

我是淘汰赛的新手,正在尝试锻炼如何使用验证。我们有以下代码 -

    var MyObjectModel = function(myObject){
    var self = this;
    self.myNumber = ko.observable(myObject.number).trimmed();
    self.myNumber.extend({
        minLength: {
            params: 7,
            message: "My Number is too short."
        },
        maxLength: {
            params: 7,
            message: "My Number is too long."
        }
    });

    self.errors = ko.validation.group(self);
}

现在我想更改代码,以便 myObject.number 的长度应恰好为 7,或者该字段应为空。我该如何进行此更改?

任何帮助将不胜感激。如果您认为有什么不清楚的地方,请告诉我,以便我详细说明。

【问题讨论】:

  • 您当前使用 minLength 和 minLength 的方法有什么问题?什么不完全有效?因为它看起来工作正常:jsfiddle.net/X9mDy/1 只有输入 7 位数字才有效。
  • minLength 和 maxLength 对我来说很好用。我还想要使该字段可选。因此,如果用户输入了任何值,它应该正好是 7 个字符长,否则它应该是空的。我试过 required:false,但它没有帮助。知道我哪里出错了吗?

标签: javascript knockout.js knockout-validation


【解决方案1】:

您可以对其使用自定义模式:

var MyObjectModel = function(myObject){
    var self = this;
    self.myNumber = ko.observable(myObject.number).trimmed();
    self.myNumber.extend({
        pattern: {
            params: '^[0-9]{7}$|^$',
            message: "My Number must have 7 chars or stay empty."
        }
    });

    self.errors = ko.validation.group(self);
}

【讨论】:

  • 非常感谢!真的帮了我
猜你喜欢
  • 2018-10-20
  • 2014-06-21
  • 2021-10-27
  • 2015-10-04
  • 2014-10-08
  • 2016-09-03
  • 2019-07-16
  • 2019-06-01
  • 1970-01-01
相关资源
最近更新 更多