2011-11-08 20 views
5

こんにちは私は1つのフォームのjQueryバリデーターを使用しています。 今日までうまくいきました。私は(「必要」に設定クラスで)フォームに追加フィールドを削除/追加フォームに新しいコードを追加しました。..Jqueryバリデータープラグインは新しい入力をチェックしません

基本的な形は>

<form name="form" id="form"> 
    <input name="text1" class="required"> 
    <a id="addnew">Add new text</a> 
<div id="newitems"></div> 
    <submit> 
    </form> 

コードIのようないくつかのことです使用は

<script type="text/javascript"> 
     $(document).ready(function({ $("#form").validate(); 
     $("#addnew").click(function({ 
     $("#newitems").append('<input class="required" name="newinput">'); 
}); }); 
</script> 

アイデアは、誰かがをクリックしたときに新しいフィールドを追加し、フォーム内の新しいテキストを追加することです。私の問題は、フォームが既にロードされているため、Validatorが新しいフィールドで動作しないということです.JavaScriptをチェックして新しいフィールドを設定する方法は?

私はので、私のサイトの正確なコードをコピーしていないその非常に長い..

This Is the validation plugin - its the most used validator on jquery

答えて

5

新しいフォーム要素を作成したら、検証プラグインにルールを追加して確認する必要があります。要素に「必須」クラスを追加すると、その要素がドキュメントの読み込み時に存在する場合にのみプラグインに警告されます。これを試してください:

$(document).ready(function({ 
     $("#form").validate(); 
     $("#addnew").click(function({ 
      var input = $("<input />").attr("name", "newinput"); 
      $("#newitems").append(input); 
      input.rules('add', {'required': true}) 
     }); 
    }); 
+0

これは正しい動作方法ですが、動的に追加される項目では機能しません。あなたはまだすべてを取り除き、再バインドする必要があります。 –

1

あなたが任意の既存の新しいコントロールに影響を与えないの動的なコンテンツを追加する場合。 domを変更した後でイベントを再割り当てする必要があります。バリデーターを再度呼び出すと、DOMの改変が呼び出されます。

1

動的コンテンツを読み込んだ後でイベントを再度バインドする必要があります。

新しいコンテンツに影響を与えない既存のコンテンツを追加する場合は、 domを変更した後でイベントを再割り当てする必要があります。バリデーターを再度呼び出すと、DOMの改変が呼び出されます。

あなたは単にあなたはまた、機能に

function rebindit() { 
$("#addnew").click(function({ 
    $("#newitems").append('<input class="required" name="newinput">'); 
    }); 
} 

とコンテンツの変更がrebindit()を呼び出すたびにそれを置くことができます

再び
$("#addnew").click(function({ 
     $("#newitems").append('<input class="required" name="newinput">'); 
     }); 

を呼び出す再バインドしたい場合は、

+0

どのようにバインドするのですか? – Svetoslav

+0

edited @Svetlio – John

+0

バインドをバインドすると、それが2回発射されます。最初に現在バインドされている項目をクリアする必要があります。 –

0

javascriptには、フィールドの内容が変更されたときにトリガされるonchangeイベントがあります。新しいフィールドでそれを利用して、そのフィールドの有効性を確認することもできます。

関連する問題