动态生成的字段(茧)和自动完成

Dynamically generated fields (cocoon) and autocomplete

我正在使用 cocoon js 并试图让自动完成工作。截至目前,自动完成仅适用于初始字段。单击 'add field' 后,自动完成仍仅适用于第一个字段。

formulation.coffee

$('.formulation_line_item_dna_name').focus ->
  $(this).autocomplete
    minLength: 2,
    source: ['foo', 'food', 'four']

formulation.html.erb

...
<div class="formulation_line_items">
  <%= f.label :dna_name, "DNA", :class => "col-md-1 control-label unbold" %>
  <div class="col-md-3">
    <%= f.text_field :dna_name, :class => 'formulation_line_item_dna_name' %>
  </div>
</div>
...
<div class="add-more-formulation-line-items">
  <%= link_to_add_association 'Add Formulation Line Item', f, :formulation_line_items, 
      :class => 'btn btn-success' unless params[:command] == 'create child' %>
</div>
...

经检查,附加行项目似乎没有附加 ui-autocomplete-input class。我尝试手动将 'ui-autocomplete-input' 添加到所有动态生成的字段,但这没有用。

我也试过添加

$('.add_fields').click ->

在我的 formulation.coffee 文件中。这仍然只允许在第一个静态字段上自动完成。

我能够通过使用 cocoon 回调成功地允许在动态生成的字段上自动完成,例如:

$(document).ready(function(){
  $('.formulation_line_items')
    .on('cocoon:after-insert', function() {
      var tags = ["foo","foobar","foobaz"];
      $('.formulation_line_item_dna_name').focus(function(){
        $(this).autocomplete({
           minLength: 2,
           source: tags
            });
    });
  })  
});