フォームには 2 つの検証方法があります。a. JQuery 検証 b. Form.Submit() ハンドラーにいくつかの複雑なハードコーディングされたルールがあります。
ユーザーが2回送信しないように、aとbの両方の検証が成功したら、送信ボタンを無効にする必要があります。
これまでの私の最善の試みは、「submitHandler」をJQuery Validationに追加することです...
jQuery("#myForm").validate(
{
submitHandler: function (form) {
form.submit({
success: function (submittedForm, action) {
alert("submitting");
$('input[type=submit]', submittedForm).attr('disabled', 'disabled');
}
});
}
});
もちろん、これはうまくいかないようです。SubmitHandler に到達するまでに、検証の両方の段階が既に実行されていますか? (a) JQuery Validation が失敗した場合、このイベントはトリガーされません。ただし、(b) カスタム検証が失敗した場合は、フォームが送信されなくても実行されます。両方 (a と b) が渡された場合は実行されますが、内部の「成功」コールバックには到達しません。したがって、私の入力が無効になることはありません。
n 個の送信検証のうちの 1 つの例を次に示します (動的な形式であり、検証が失敗したときに .submit を使用して false を返す他の同様の検証があります)...
$('#myForm').submit(function () {
// If one is checked they must both be checked.
if ($(SessionRadioId_2).is(':checked') || $(SessionRadioId_4).is(':checked')) {
if (!($(SessionRadioId_2).is(':checked')) || !($(SessionRadioId_4).is(':checked'))) {
alert('If you plan on attending "ABC" you must select it in both Session 2 & 3.');
return false;
}
}
ありがとう、ジャスティン