0

Rails アプリで Jquery TokenInput を使用して、ユーザーが情報をすばやく入力できるようにしています。各ユーザーには、college_items と呼ばれる同じクラスのアイテムが多数含まれるプロファイルがあります。各 college_item には独自の編集リンクがあり、モーダルの適切な編集フォームを含むモーダルがポップアップします。

私は Ryan Bates のスクリーンキャストに従い、次のコードを使用して TokenInput が適切に機能するようにしました

$(function() {
 $("#education_major_tokens").tokenInput("/majors.json", {
   theme: "facebook"
  })
});

私からしてみれば:

<%= f.text_field :major_tokens %>

私のモデルでは:

def major_tokens=(ids)
 self.major_ids = ids.split(",")
end


私が直面している問題は、この同じフィールドが各編集フォームに表示されるため、最初のアイテムの編集フォームではすべてが完全に機能しますが、他のアイテムの編集フォームでは JavaScript が初期化されないことです。私の質問は、最初だけでなく、このフォーム要素が表示されるたびに初期化するように JavaScript を変更するにはどうすればよいですか?

編集:私はこのようなものが解決策かもしれないと思った:

$(function() {
 $("#education_major_tokens").each(function(){
   $(this).tokenInput("/majors.json", {
   theme: "facebook"
   })
  });
});

しかし、それはまだ私にとってはうまくいきません。アイデアはありますか?

EDIT 2:最終的にこれを理解しました。上記の編集を参照してください。 #education_major_tokens を使用する代わりに、各入力を :class => "major_input" に設定し、コード内の "#education_major_tokens" を ".major_input" に変更しました。

4

1 に答える 1

1

これは少し遅いと思いますが、トークンフィールドにクラスを割り当ててみてください

<input class="yourtokenfield" type="text" />

その後、これを使用してください

$(function() {
 $(".yourtokenfield").each(function(){
   $(this).tokenInput("/majors.json", {
   theme: "facebook"
   })
  });
});

問題はクラスの名前が不適切なためだと思います。IDはHTMLドキュメントに1回だけ表示する必要があることを忘れないでください。

于 2012-05-08T05:20:11.817 に答える