添加 jQuery 验证方法时 this.optional(element) 做了啥?

Posted

技术标签:

【中文标题】添加 jQuery 验证方法时 this.optional(element) 做了啥?【英文标题】:What does this.optional(element) do when adding a jQuery validation method?添加 jQuery 验证方法时 this.optional(element) 做了什么? 【发布时间】:2012-10-17 03:14:20 【问题描述】:

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

我想知道this.optional(element) 做了什么。我创建了两个表格进行测试:Form1 和 Form2 — 一个带有 this.optional(element),另一个没有。从理论上讲,根据 Andrew Whitaker 在this answer 上的几个 cmets:

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

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

但在实际操作中,Form1 和 Form2 的工作方式没有区别。请帮助我了解操作上的区别。

【问题讨论】:

Form1 和 Form2 不再可见。任何替代链接? @accord_guy:编辑了问题。 【参考方案1】:

好的...所以在您的示例中,该字段在任何一种形式中都不会是空白的。它要么具有占位符值,要么具有电子邮件地址的尝试。 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 类相比,与仅通过值为BOB 的验证的mustbeBOB 类相比,空白将失败。这更有意义吗?

【讨论】:

有用的例子!这意味着如果该字段是必需的或具有默认值,则使用 this.optional(element) 是没有意义的,对吧?【参考方案2】:

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

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

【讨论】:

以上是关于添加 jQuery 验证方法时 this.optional(element) 做了啥?的主要内容,如果未能解决你的问题,请参考以下文章

jquery.validation自定义正则表达式验证

带有动态错误消息的jquery验证添加方法[重复]

Jquery在添加规则时验证抛出错误

jQuery - 如何将验证相同的输入名称添加到规则方法中? [复制]

JQuery的validate验证时 如何验证下拉框是否选中

添加jquery验证