0

$('#form').validate({})クリック イベントではなく、ページの読み込み時に関数を初期化するのが最善であることが提案されています: jquery.form/validate プラグインは、入力が変更された場合にのみ送信を許可します。

$('#form').validate({})関数内に関数をラップせずに、複数の動的に追加されたフォームに対してこれを行う方法を考えていon('click', 'input[type="submit"]',ます。

たとえば、次のコードをご覧ください。

var id="some identifier for the specific form that is submitted";
`$('#form'+id).validate({})`
  1. idそもそも、各フォームを区別するために必要なこの一意の識別子 はどのように作成されるのでしょうか?
  2. idまた、AJAX などによって動的に作成されたために、ページが読み込まれた後がわからない場合はどうすればよいでしょうか。

私はこれを行ってきましたが、これは推奨されていないものです:

$(document.body).on('click', 'input[type="submit"]', function(){
  var id=this.id;
  $('#form'+id).validate({});
});

考え?

ありがとう、ティム

4

1 に答える 1

4

ページの読み込み時にフォームがまったく存在しない場合は、.validate()送信時に初期化する代わりに、フォームが作成された直後に初期化します...

// code that dynamically creates #myNewform, then initialize validate()

$('#myNewform').validate();

(validate()送信ボタンがクリックされるまで検証が初期化されないため、送信ハンドラー内に配置しないでください。これにより、フォームが検証に失敗し、もう一度送信する必要がある場合に問題が発生します。2 回目の送信により、プラグインが再初期化されます。同様の問題については、ここここ、およびここを参照 してください。)

ページ上に存在する場合form...

$(document).ready(function(){
    $('#myform').validate();
});

または、form同じ検証オプションを共有する複数の場合...

$(document).ready(function(){
    ('.myform').each(function(){
        $(this).validate();
    });
});
于 2012-06-11T20:25:33.530 に答える