0

私の問題は、Jquery を使用したフォームの検証にあります。validate私の検証は関数のみでうまく機能していましたが、その後submitオプションを追加しましたが、検証は行われません。フォームを検証してから、送信を実行したいと思います。

$(document).ready(function () {
    $('#ReqCreateForm').validate({
         invalidHandler: function (e, validator) {
            var errors = validator.numberOfInvalids();
            if (errors) {
                var message = errors == 1
                ? 'Missing 1 field'
                : 'Missing fields';
                $("div.error span").html(message);
                $("div.error").show();
            } else {
                $("div.error").hide();
            }
        },
        onkeyup: false,
        highlight: function (element) {
            $(element).addClass('error');
        }, unhighlight: function (element) {
            $(element).removeClass('error');
        }
    });

    $('#ReqCreateForm').submit(function () {
        $.ajax({
            url: this.action,
            type: this.method,
            data: $(this).serialize(),
            success: function (result) {
                alert("All Great!");
            },
            error: function (jqXhr, textStatus, errorThrown) {
                alert("Error '" + jqXhr.status + "' (textStatus: '" + textStatus + "', errorThrown: '" + errorThrown + "')");
            }
        });
        return false;
    });
});

ありがとうございます。

解決:

解決策は非常に簡単でした。次のコードを送信オプションの前に追加しました$.ajax

  if (!$(this).valid()) {
         return false;
    }
4

2 に答える 2

1

次のように、送信ボタンのクリック ハンドラーで有効な関数を呼び出す必要があります。

if($('#ReqCreateForm').valid())
{
    //then do your thing
}
于 2012-04-04T18:41:28.620 に答える
0

このプラグインを使用して、Ajax を使用してフォームを送信します。onbeforesubmit というイベントがあり、問題なく検証を呼び出すことができます。多分あなたはそれを試してみたいです。あなたの場合、データを検証するためにajax呼び出しにデータを送信する前にイベントをキャッチする必要があります(私が提案したプラグインを使用したくない場合)

于 2012-04-04T18:38:37.530 に答える