3

フォームには 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;
        }
    }

ありがとう、ジャスティン

4

1 に答える 1

0

複数の送信は回避しようとしているため、検証に送信ボタンを無効にするのではなく、検証が失敗した場合は無効にしてから再度有効にします。

于 2011-09-16T17:49:56.807 に答える