次のように、送信ボタンに関連付けられたjQuery関数があります。
$(function () {
$('#signupform').submit(function () {
alert('test');
});
});
ただし、フォームが有効かどうかに関係なく起動します。私のモデルはさまざまなDataAnnotationsで装飾されており、クライアント側の検証はうまく機能していますが、フォームが検証された場合にのみjQuery関数が起動するようにします。どうすればそれを達成できますか?
編集:明確にするために、MVC DataAnnotations + jQueryの控えめなjavascriptを使用して、クライアント側の検証を処理しています。独自のJavaScript検証ルーチンは作成していません。組み込みのjQuery検証は、フォームの検証に非常に役立ちますが、自分の関数内でその検証の結果をブール値に変換する方法を知る必要があるだけです。
Jquery validateの控えめな検証を使用している場合:
$(function () {
$('#signupform').submit(function () {
if($(this).valid()) {
alert('the form is valid');
}
});
});
_$(function () {
$('#signupform').submit(function (e) {
if (validateForm() === true) {
alert('Form is valid.');
}
});
});
_
validateForm()
関数は、検証をテストするためにブラウザー内で使用する関数です。編集:これは確かにjQueryの$(this).valid()
です。
注:質問の明確化に関する上記の回答は、検証時にフォームの送信を停止する1つの方法ですが、目的の手法( jQuery valid()validation )ではありません。詳細については、Darin Dimitrovの回答を参照してください。
また、元の質問を読み直すと、意図は最初に説明したものと正反対でした。そこで、フォームの送信を防ぐ方法ではなく、検証に関する機能的な応答を示すように編集しました。