2012-02-29 8 views
0

ドキュメントのロード後にAJAX経由でロードされる長いフォームの検証に問題があります。それが存在しているので、私にエラーを与える前に、標準の検証構文を使用して、バリデータは、ドキュメントに自分のフォームを探します。私はAで$("mainForm").validate();を入れてみましたjQuery Validatorプラグイン関数内からのトリガー

nothing selected, can't validate, returning nothing 

$(document).ready(function(){ 
    $("#mainForm").validate(); 
}); 

放火犯がで応答します関数は、フォームからonSubmitイベントで関数を呼び出しますが、運はありません:

function validate() { 
    $("mainForm").validate(); 
}; 

---------- 

<form id="mainForm" onSubmit="validate();"> 
    ... 
</form> 

考えられますか?


@クリスのためにいくつかの追加情報:

私は動的に多くの異なるモジュールに基づいてフォームを作成しているページがあります。ユーザーが適用するモジュールを選択すると、その情報が入力されたフォームが更新されます。ユーザーがリンクをクリックしてモジュールをロードすると、loadSection();関数が呼び出されます。これはloadSection();関数は次のようになります。私は `$(#1 MainFormという).validate()を入れた場合

function loadSection(id, div, size, frame) { 
    var url = "loadSection.php?id=" + id + "&size=" + size + "$frame=" + frame; 
    $.get(url, 
    function(data){ 
     $(div).append(data); 
    }); 
} 

;」この関数のコールバックでは、新しいモジュールが挿入されるたびに呼び出される可能性があります。これは良いかもしれませんが、悪いかもしれませんが、フォームのフィールドが変更されたとしても、検証が同じフォームで何度も呼び出される方法がわかりません。

思考?

答えて

0

フォームの特定の要素を検証するには、要素にクラス定義をrequiredとして指定する必要があります。しかし、私はあなたがどこにいてもそのように表示されていないと思います。例えば

あなたは電子メールを確認したい場合:

<p> 
    <label for="cemail">E-Mail</label> 
    <em>*</em><input id="cemail" name="email" size="25" class="required email" /> 
    </p> 
0

セレクタ"mainform"での単純なミスが有効なセレクタではありません。それはID

EDITであれば、「#」プレフィックスを追加します。また、あなたは別のvalidate呼び出しをインラインを持って気づく、あなたはおそらく右の問題を持っている1

1

ことを取り除きます。フォームがDOMのdocument.ready()に存在しない場合、何もバインドされません。

JQueryを使用しているので、jquery $ .ajax(または類似の)関数を使用してフォームが追加されたと想定します。最も簡単な解決策は、AJAXリクエストのコールバック関数に$("#mainForm").validate();を追加することだけです。 Jquery ajaxを使用していない場合は、フォームを追加するコードを投稿してください。さらにお手伝いできます。

+0

私はもう少し説明するかもしれないより多くの情報で元の質問を更新しました。ありがとう! – jlommori

関連する問題