42

请参阅文档:
https ://jqueryvalidation.org/jQuery.validator.addMethod/

我想知道是什么this.optional(element)。我创建了两个表单来测试:
Form1Form2——一个有this.optional(element),另一个没有。从理论上讲,根据Andrew Whitaker对这个答案的一些评论:

所做this.optional的只是说“如果该字段是可选的,如果它是空白则返回true”

this.optional检查基本上是在评估它是否符合规则之前检查该字段是否为空白。

但实际上,我认为Form1Form2的工作方式没有区别。请帮助我理解行动的区别。

4

2 回答 2

49

好的...所以在您的示例中,该字段在任何一种形式中都不会是空白的。它要么具有占位符值,要么具有电子邮件地址的尝试。this.optional(element)如果元素为空且不需要,则整个要点是立即返回 true。

所以如果你有这两种方法:

jQuery.validator.addMethod("BOB", function (value, element) {
    return this.optional(element) || 
        element.value === 'BOB';
}, 'You did not enter BOB');

jQuery.validator.addMethod("mustbeBOB", function (value, element) {
    return element.value === 'BOB';
}, 'You did not enter BOB');

添加一个类BOB required与输入一个类是一样的mustbeBOB。与具有BOB允许空白或“BOB”的类mustbeBOB相比,与仅通过值为 的验证的类相比BOB,空白将失败。这更有意义吗?

于 2012-10-26T22:02:28.167 回答
4

this.optional旨在用于通用验证方法,可能与必需或可选元素一起使用。如果该字段未填写,它允许他们跳过所有自己的检查。如果该字段是可选的且为空白,则方法调用this.optional立即成功返回。

通过使用它,该方法可以假设该值是非空的,这可以简化其其余的编码。

于 2012-10-26T20:59:06.020 回答