【问题标题】: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) 做了什么。我创建了两个表格进行测试:
Form1Form2 — 一个带有 this.optional(element),另一个没有。从理论上讲,根据 Andrew Whitaker 在this answer 上的几个 cmets:

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

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

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

【问题讨论】:

  • Form1 和 Form2 不再可见。任何替代链接?
  • @accord_guy:编辑了问题。

标签: javascript jquery html forms validation


【解决方案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的方法立即成功返回。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-17
    相关资源
    最近更新 更多