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

Mor*_*ori 35 html javascript forms validation jquery

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

我想知道是什么this.optional(element).我创建了两个要测试的表单:
Form1Form2 - 一个用于this.optional(element),另一个没有它.从理论上讲,根据安德鲁·惠特克对这个答案的一些评论:

一切this.optional都是说"如果该字段是可选的,如果它是空白则返回true"

this.optional检查字段是否符合规则之前,检查基本上是检查字段是否为空.

但在行动中,我发现Form1Form2的工作方式没有区别.请帮助我理解行动的不同.

Ryl*_*ley 44

好的......所以在你的例子中,任何一种形式的字段都不是空白的.它具有占位符值或尝试使用电子邮件地址.整点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');
Run Code Online (Sandbox Code Playgroud)

添加一类BOB required将与输入一类相同mustbeBOB.相比之下,如果一个类BOB允许空白或"BOB",而其类mustbeBOB只会通过值为的验证BOB,则空白将失败.那更有意义吗?

  • 有用的例子!这意味着如果字段是必需的或具有默认值,使用`this.optional(element)`是没有意义的,对吧? (9认同)