web-dev-qa-db-ja.com

フォームが有効な場合にのみjQuery関数を起動する方法

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

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

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

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

49
Scott

Jquery validateの控えめな検証を使用している場合:

$(function () {
    $('#signupform').submit(function () {
        if($(this).valid()) {
            alert('the form is valid');
        }
    });
});
120
Darin Dimitrov
_$(function () {
    $('#signupform').submit(function (e) {
        if (validateForm() === true) {
            alert('Form is valid.');
        }
    });
});
_

validateForm()関数は、検証をテストするためにブラウザー内で使用する関数です。編集:これは確かにjQueryの$(this).valid()です。

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

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

8
Jared Farrish