42

ドキュメントを参照してください:
https://jqueryvalidation.org/jQuery.validator.addMethod/

私は何をするのだろうかthis.optional(element)
テスト用にForm1Form2の 2 つのフォームを作成しましたthis.optional(element)。理論的に言えば、アンドリュー・ウィテカーによるこの回答に関するいくつかのコメントによると:

すべてthis.optionalは、「フィールドがオプションの場合、空白の場合は true を返す」ということです。

チェックは基本的に、this.optionalルールを満たしているかどうかを評価する前に、フィールドが空白かどうかを確認することです。

しかし実際には、Form1Form2の動作に違いはありません。アクションの違いを理解するのを手伝ってください。

4

2 に答える 2

49

わかりました...あなたの例では、どちらのフォームでもフィールドが空白になることはありません。プレースホルダー値があるか、電子メール アドレスで試行されます。要点は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入力することと同じですmustbeBOBBOBこれを、空白または「BOB」を許可するクラスを持つことと比較してmustbeBOB、 の値でのみ検証に合格するクラスBOB、空白が失敗することを比較してください。それはもっと理にかなっていますか?

于 2012-10-26T22:02:28.167 に答える
4

this.optional必須またはオプションの要素で使用される可能性のある汎用検証メソッドで使用することを目的としています。フィールドが入力されていない場合は、独自のチェックをすべてスキップできます。フィールドがオプションで空白の場合、メソッド呼び出しthis.optionalはすぐに正常に戻ります。

これを使用することで、メソッドは値が空でないことを想定できるため、残りのコーディングを簡素化できます。

于 2012-10-26T20:59:06.020 に答える