ドキュメントを参照してください:
https://jqueryvalidation.org/jQuery.validator.addMethod/
this.optional(element)
は何をするのだろうか。テストする2つのフォームを作成しました。
Form1 および Form2 — this.optional(element)
のあるものとないもの。理論的に言えば、Andrew Whitakerによる この回答 に関するいくつかのコメントによると:
すべて
this.optional
は、「フィールドがオプションの場合、空白の場合はtrueを返す」と言う
そして
this.optional
checkは基本的に、フィールドがルールに適合するかどうかを評価する前に、フィールドが空白かどうかを確認することです。
OK ...したがって、例では、どちらの形式でもフィールドが空白になることはありません。プレースホルダー値があるか、メールアドレスで試行されています。 this.optional(element)
の重要な点は、要素が空白であり、必要ない場合にすぐにtrueを返すことです。
したがって、次の2つの方法がある場合:
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
の値を持つ検証のみに合格するmustbeBOB
のクラスに対して、空白または「BOB」を許可するBOB
のクラスを持つことと比較してください。空白は失敗します。それは理にかなっていますか?
this.optional
は、必須またはオプションの要素で使用される可能性のある汎用検証メソッドで使用することを目的としています。フィールドに値が入力されていない場合、独自のチェックをすべてスキップできます。フィールドがオプションの場合、メソッドはすぐに正常に戻ります。必要な場合、メソッドはすぐに失敗を返します。
これを使用することにより、メソッドは値が空でないと仮定でき、残りのコーディングを簡素化できます。