在轨道中自动完成

时间:2015-04-21 14:42:58

标签: javascript jquery ruby-on-rails ruby-on-rails-4 coffeescript

在我的rails应用程序中,我有自动完成的字段

<%= f.label :company_name, class: "profile_label"  %><br />
<%= f.text_field :company_name, data: {autocomplete_source: Company.order(:name).map(&:name) },:autocomplete => :off, class: 'autocomplete-experience form-control profileform-botttom' %>

我还有自动完成的coffescript文件

jQuery ->
  $('.autocomplete-experience').autocomplete
    source: $('.autocomplete-experience').data('autocomplete-source')
    select: (event,ui) -> $("input.xx").val(ui.item.id)

这适用于第一个字段。当我添加另一个字段时认为添加方法的链接自动完成将不适用于第二个字段。为什么会这样,我该如何解决这个问题?

更新

这是用于添加字段的代码

$('form').on 'click', '.add_fields', (event) ->
    time = new Date().getTime()
    regexp = new RegExp($(this).data('id'), 'g')
    $(this).before($(this).data('fields').replace(regexp, time))
    event.preventDefault()

警告信息

> SyntaxError: expected expression, got '<' edit:1069:2 Use of
> getPreventDefault() is deprecated.  Use defaultPrevented instead. edit
> SyntaxError: expected expression, got '<' edit:2:2 SyntaxError:
> expected expression, got '<' edit:2:2

这是发出此警告的代码

  $('#resume-tab a').click(function (e) {
    e.preventDefault()
    $(this).tab('show')
  });

1 个答案:

答案 0 :(得分:1)

$.autocomplete调用仅适用于DOM中已有的元素。动态添加字段后,您应再次致电autocomplete

setup_autocomplete = ->
  $('.autocomplete-experience').autocomplete
    source: $('.autocomplete-experience').data('autocomplete-source')
    select: (event,ui) -> $("input.xx").val(ui.item.id)

jQuery ->
  setup_autocomplete()

$('form').on 'click', '.add_fields', (event) ->
  time = new Date().getTime()
  regexp = new RegExp($(this).data('id'), 'g')
  $(this).before($(this).data('fields').replace(regexp, time))
  event.preventDefault()
  setup_autocomplete()