54

次のように、送信ボタンに関連付けられたjQuery関数があります。

$(function () {
    $('#signupform').submit(function () {
        alert('test');
    });
});

ただし、フォームが有効かどうかに関係なく起動します。私のモデルはさまざまな DataAnnotations で装飾されており、クライアント側の検証はうまく機能していますが、フォームが検証された場合にのみその jQuery 関数を起動したいと考えています。どうすればそれを達成できますか?

編集:明確にするために、MVC DataAnnotations + jQuery の控えめな JavaScript を使用して、クライアント側の検証を処理しています。独自の JavaScript 検証ルーチンを作成していません。組み込みの jQuery 検証は、フォームを検証する素晴らしい仕事をしていますが、その検証の結果を自分の関数内でブール値に変換する方法を知る必要があるだけです。

4

2 に答える 2

129

jquery validate 目立たない検証を使用している場合は、次のことができます。

$(function () {
    $('#signupform').submit(function () {
        if($(this).valid()) {
            alert('the form is valid');
        }
    });
});
于 2011-02-19T17:31:24.980 に答える
8
$(function () {
    $('#signupform').submit(function (e) {
        if (validateForm() === true) {
            alert('Form is valid.');
        }
    });
});

validateForm()この関数は、ブラウザ内で検証をテストするために使用する関数になることに注意してください。編集:これは確かにjQueryの$(this).valid().

注:質問を明確にするために、上記の回答は検証時にフォームの送信を停止する1つの方法ですが、望ましい手法ではありません(jQuery valid() validation)。詳細については、Darin Dimitrov の回答を参照してください。

また、元の質問を読み直すと、意図は私が最初に説明したものとは正反対でした。そのため、フォームの送信を防ぐ方法ではなく、検証時の機能的な応答を示すために編集しました。

于 2011-02-19T17:30:16.307 に答える