【问题标题】:validate.js returns undefined when testing for single valuevalidate.js 在测试单个值时返回 undefined
【发布时间】:2016-08-27 08:08:31
【问题描述】:

我正在尝试使用 validate.js 库来验证单个值,但我从 validate.single() 函数中得到了 udefined 结果。

var test1 = "test12345";
var test2 = "1234";
var test3 = "";

var constraints1 = {
  length: {
    is: 4
  }
}

var constraints2 = {
  length: {
    minimum: 4
  }
}

var constraints3 = {
  length: {
    maximum: 4
  }
}

console.log('Testing for exact length');
console.log(validate.single(test1, constraints1));
console.log(validate.single(test2, constraints1));
console.log(validate.single(test3, constraints1));

console.log('Testing for min length');
console.log(validate.single(test1, constraints2));
console.log(validate.single(test2, constraints2));
console.log(validate.single(test3, constraints2));

console.log('Testing for max length');
console.log(validate.single(test1, constraints3));
console.log(validate.single(test2, constraints3));
console.log(validate.single(test3, constraints3));

上面例子的结果:

[Log] Testing for exact length
[Log] ["is the wrong length (should be 4 characters)"]
[Log] undefined
[Log] undefined
[Log] Testing for min length
[Log] undefined
[Log] undefined
[Log] undefined
[Log] Testing for max length
[Log] ["is too long (maximum is 4 characters)"]
[Log] undefined
[Log] undefined

为什么未定义?

JSFiddle:https://jsfiddle.net/3s8ckdkc/13/

【问题讨论】:

    标签: javascript validate.js


    【解决方案1】:

    请查看您正在使用的库的主页。

    在示例中,有一个 pass case 表示返回 undefined

    简而言之,只要有一个约束被破坏,库就会返回一个值。

    否则返回undefined

    库将空、null 或 undefined 视为有效值。

    从页面:

    重要!有点不正统的一点是,大多数验证器会考虑空值(null、未定义、只有空格的字符串等)有效值。因此,例如添加至少 6 个字符的约束就像说如果给定属性,它必须至少有 6 个字符。 这与示例 Ruby on Rails 不同,其中验证器具有 allow_nil 选项。我发现您希望对可选属性进行约束是很常见的。

    这意味着您放置空字符串的 test3 始终有效,因为它是一个空字符串,与您的约束无关。

    【讨论】:

    • 好的,我明白了,但是我在约束被破坏的地方也变得不确定......?例如,test3 = "" 应该在我的示例中被所有三个约束都打破,但也应该得到 beck Undefined
    • 谢谢,如果你问我奇怪的逻辑
    • Important! Most validators consider empty values (null, undefined, whitespace only strings etc) valid values so make sure you use the presence validator on attributes that are required.的文档中有这个标记
    猜你喜欢
    • 1970-01-01
    • 2015-01-11
    • 1970-01-01
    • 1970-01-01
    • 2020-03-25
    • 2014-03-06
    • 1970-01-01
    • 1970-01-01
    • 2022-11-15
    相关资源
    最近更新 更多