添加 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 - 如何将验证相同的输入名称添加到规则方法中? [复制]