検証にオプションを指定しただけで(errorElement、...)、validateメソッドを呼び出したり、イベントに関連付けたりせずにルールを設定しましたが、jQueryは自動的に検証しますが、いつ検証するかを制御するにはどうすればよいですか?
1 に答える
あなたはあなたがやろうとしていることについてもっと多くの詳細を提供する必要があるでしょう、しかしあなたがこれまでにそれを書いたので私はあなたの質問に答えることができます。
タイトル:なぜjqueryはvalidateを呼び出さずに検証するのですか?
.validate()
フォーム上のプラグインを初期化するために1回呼び出されます。これは、オンデマンドで検証をトリガーする方法ではありません。初期化されると、フォームはプラグインに組み込まれているさまざまなイベントコールバックに従って自動的に検証されます。詳細は次のとおりです...
OP:私はvalidate(errorElement、...)にオプションを与えただけで、validateメソッドを呼び出したり、イベントに関連付けたりせずにルールを設定しましたが、jqueryは自動的に検証しますが、いつ検証するかを制御する方法は?
プラグインはすでにこれを自動的に行うため、プラグインをイベントに関連付ける必要はありません。そうでなければ、それはかなり役に立たないでしょう。
を呼び出すと.validate()
、フォームでプラグインを初期化しています。つまり、はい、これはフォームの準備ができたことを意味し、、、、、およびselect、button&checkboxなどのすべての一般的なイベントでトリガーされる検証テストを自動的に実行しsubmit
ます。なぜあなたはそれを望まないのですか?onkeyup
onfocusout
click
プログラムで検証テストを実行するには、フォーム全体で検証テストをトリガーし、フォームにエラーが表示される という点で、イベントに非常によく似た組み込み.valid()
メソッドを呼び出すことができます。また、ブール値を返すか、フォームが検証テストに合格したかどうかを示します。submit
.valid()
true
false
フォーム全体ではなく、単一の要素でのみ検証テストをトリガーする必要がある場合は、を使用します$('#myelement').valid()
。この場合も、メッセージが表示され、ブール値が返されます。
何らかの理由で検証を実際に完全に「無効」および「有効」にする必要がある場合、プラグインをフォームからバインド解除するための組み込みメソッドがないため、これを直接行うことはできません。ただし、組み込みのメソッドrules('remove')
とrules('add')
メソッドを使用してシミュレートできます。フィールドにルールがない場合は、検証がまったくないかのように動作します。ただし、データ送信を行うためにajaxを使用している場合に備えて、submitHandler
コールバックなどの他のプラグインオプションを引き続き使用できます。