次の理由により、使用$('#SomeFormId')
は機能しません。
$('#SomeFormId').valid = false;
次に、フォームsubmit
ハンドラーで(私が想定している)を使用して再度アクセスすると、次のようになります。
var form = $('#SomeFormId'); // or $(this)
if (form.valid) {
//
}
同じDOM要素を参照している場合でも、基本的に2つの異なるオブジェクトを作成しています。したがって、1つに設定valid = true
しても、2つ目には更新されません。
ただし、提供したコードは非常に必要最低限のものであるため、検証はsubmit
ハンドラーとは別であると想定しています(とにかくあるため)。したがって、フラグblur
などを利用することができます(コンテキスト内にあることを確認してください)。 .data()
。
// on blur
$('#SomeFormId').data('isvalid', false); // invalid
// on submit
var isvalid = $('#SomeFormId').data('isvalid');
if (!isvalid) {
// invalid form
ev.preventDefault();
}
編集
jQueryイベントオブジェクト
関数をjQueryのイベントハンドラーとしてバインドする場合、jQueryがサイレントに実行することの1つは、正規化されたEventオブジェクトを「作成」することです。これには、ハンドラーで使用できるイベントに関する情報が含まれ、いくつかの方法でイベントの動作を制御することもできます。
// setting a submit event on my form
// | whatever you put here
// V is the event object.
$('#SomeFormId').on('submit', function (ev) {
// preventing the default action
// : in a form, this prevents the submit
ev.preventDefault();
});