5

目立たない検証は、ユーザーがフォームを送信するまでフォームの検証を行わないという考えに基づいています。それが発生すると、フォームで何かが無効な場合、ユーザーがフィールドを変更するとすぐに各フィールドが検証されます。

私がやりたいことは、「目立たないように」フォーム要素の検証をトリガーすることです。つまり、ユーザーが既にフォームを送信しようとした場合にのみ、フォーム要素を検証します。したがって、次のように要素の検証をトリガーできます (特定のチェックボックスが変更されたときに実行します)。

$('#chkNoPersonId').change(function(){
    $('#lstPersonId').valid();
});

しかし、問題は、ユーザーがまだ一度フォームを送信していない場合でも、常に検証され、無効なlstPersonId場合にエラーが表示されることです。ユーザーがフォームを送信しようとしたときにのみ検証する必要があります。ユーザーがフォームを送信しようとしたかどうか、またはこの動作を達成できる他の方法があるかどうかを確認するために確認できる値はありますか?

4

2 に答える 2

5

送信ボタンにフラグを追加して、フォームの送信が既にクリックされたかどうかを識別することができます。元:

$('#submitButn').click(function(){
   $(this).attr('data-submitted','true');
});

入力チェック天気の各検証では、フラグが真かどうかを確認し、検証ロジックを実行します。

$('#chkNoPersonId').change(function(){
  if( $('#submitButn').attr('data-submitted')=='true'){
   $('#lstPersonId').valid();
  }
});

フォームのクリアまたはリセット時に、その属性を削除できます

 $('#submitButn').removeAttr('data-submitted');
于 2013-05-24T11:51:50.827 に答える
1

submitイベントハンドラを使ってみましたか?

$("form").submit(function() {
    //validate here
});

ソース: http://api.jquery.com/submit/

于 2013-05-24T11:51:03.920 に答える