2012-03-22 6 views
0

Check out this jsbin送信ボタンを使用していないときにjQueryの検証エラーが表示されない

フォームには、ajax(実際の送信ボタンではありません)経由で送信するカスタムボタンがあります。 jquery-validationを使用してフォームを検証し、validate().checkForm()を実行して検証しています。

私の質問です - なぜ私はこれを行うときに特定のフィールドのエラーメッセージが表示されませんか?私は標準の送信ボタンを使用しているとき、それらはすべて正しく表示されます。

編集:私の例にはajaxの提出は含まれていませんが、そこにあるとふりまとめてください。

答えて

1

validateは送信イベントをリスンするためです。

クリックイベント内に$("form").submit();を追加すると、そのイベントは発生します。あなたは、ボタンのクリックでフォーム送信イベントを関連付ける必要があります、そしてあなたは、フォーム自体の内部にそれを置きたいと思うだろう、言っ@weezerに

http://jsbin.com/avuhed/edit#javascript,html,live

+0

これはありがとう、ありがとう。 – ripper234

+0

実例:http://jsbin.com/ajeyot/8 – ripper234

-1

jqueryの検証は、標準のフォーム送信によってトリガーされます。

var isValid = $("#yourForm").valid(); 

       if(isValid) { 
// Do stuff 
    } 

あなたが入れた場合は、[はい、私は持っていると::

$("#submit").click(function() { 
    var isValid = $("#form").isValid(); 
    if(isValid) { 
     alert('test'); 
    } 
}); 

代わりにあなたが持っているもので、あなたのカスタムに.clickハンドラをアタッチようにボタンを提出する必要があるかもしれません

内のカスタムボタンを移動すると、検証が機能します。 http://jsbin.com/ajeyot/9

+0

あなたは私の例を見ていませんか? – ripper234

+0

はい、私はあなたが$( "#submit")を置いていれば、(isValid){ alert( 'test '); } });あなたが持っているものの代わりに**フォーム内の**カスタムボタンを移動すると、検証が機能します。 http://jsbin.com/ajeyot/9/ – RTulley

+0

申し訳ありません。この提案を含めるように回答を編集すると、私はそれをアップヴォートします(編集するまでは今はできません)。 – ripper234

0

ピギーバッキング。今すぐ外に座っています。将来のアップデートと健全性のために、あなたの人生をより簡単にグループ化することができます。

+0

JSはフォームの中にあるべきだと言っていますか? –

+0

いいえ、私はボタン要素がフォームの内側にあるべきだと言っています。 – Tim

関連する問題