16

同じフォームを使用して値を追加および編集しています。アイテムの追加中に、サーバーに対して名前チェックを強制する必要があります。ただし、編集モードでは、名前が変更されない可能性があるため、検証しないようにします。以下のドキュメントのリンクに基づいて、バリデーターの無視プロパティを「無視」クラスに設定しようとしました。名前入力で同じクラス名を使用していますが、機能しません。サーバーに対して検証を続けました。何かご意見は?

私が使用しているコードへの URL、主に検証機能です。http://jqueryvalidation.org/validate/

ignore プロパティのドキュメントに基づいて、次のように述べています。

検証時に無視する要素。単純に除外します。jQuery の not メソッドが使用されるため、not() によって受け入れられるすべてのものをこのオプションとして渡すことができます。submit および reset タイプの入力は常に無視されるため、無効な要素も無視されます。

コードを調べたところ、 への呼び出し中にエラーのクリーンアップに影響を与えていることがわかりましたvalidator.resetForm()。コードのこの部分は正しく機能します。

4

1 に答える 1

50
  • フォームまたは個々のフィールド要素に対して jQuery Validate プラグインのオン/オフを切り替えることはできません。これに対する方法や回避策はありません。

  • ignoreオプションは、プラグインの「1 回限りの」初期化である呼び出し内で設定されるため.validate()、オプションを動的に変更または切り替えることはできません。以降の呼び出し.validate()は常に無視されます。

でプラグインを初期化した後.validate()、唯一の解決策は、メソッドを使用して個々のフィールド要素.rules()を動的'add'にルール化することです。'remove'用語にだまされないでください'add'...この方法では、既存のルールを上書きすることもできるため、'remove'最初にそれらを実行する必要はありません。

フィールドを次のように動的に設定するにはrequired:

$('#myfield').rules('add', {
    required: true   // set a new rule
});

フィールドをnot requiredとして動的に設定するには:

$('#myfield').rules('add', {
    required: false   // overwrite an existing rule
});

また

$('#myfield').rules('remove', 'required');  // removes only specified rule(s)

また

$('#myfield').rules('remove');  // removes all rules for this field

ドキュメント: http://jqueryvalidation.org/rules/

于 2013-09-25T22:58:14.067 に答える