【问题标题】:jQuery datepicker not initialized after partial inserted部分插入后jQuery datepicker未初始化
【发布时间】:2013-02-15 21:27:32
【问题描述】:

我有一个使用 turbo 链接和 jquery.turbolinks 的 rails 4 应用程序。它还使用 jQuery 日期选择器插件。

我正在使用 Ryan Bates 的技术在一个表单中添加/编辑多个模型,来自 Railscast 第 196 集嵌套模型表单。

就我而言,我正在添加/编辑与家庭相关的人员。 person_fields 部分包含一个“尝试”使用日期选择器的出生日期字段(带有 class="datepicker" 的字符串输入),但它不起作用,当我单击带有类的字段时,日期选择器不会出现'.datepicker'。

对于与页面一起加载的其他表单,日期选择器可以正常工作。但是对于使用此代码动态添加的表单,日期选择器不会出现。

这是插入部分链接的代码:

  def link_to_add_fields(name, f, association)
    new_object = f.object.send(association).klass.new
    id = new_object.object_id
    fields = f.fields_for(association, new_object, child_index: id) do |builder|
      render(association.to_s.singularize + "_fields", f: builder)
    end
  link_to(name, '#', class: "add_fields small round button success", data: {id: id, fields: fields.gsub("\n", "")})
 end

以及插入部分的咖啡脚本:

$('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()

还有日期选择器的咖啡脚本:

$('.datepicker').datepicker()

非常感谢任何帮助。

--- 更新 ---

感谢 Billy Monk 的建议,添加字段的代码现在如下所示:

$('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()
  $('.datepicker').datepicker()

而且它有效!非常感激!一旦允许,我会尽快接受答案。

【问题讨论】:

    标签: jquery jquery-plugins ruby-on-rails-4


    【解决方案1】:

    在添加新字段的 JavaScript 函数中,在添加新字段后添加 $('.datepicker').datepicker()。日期选择器不会自动绑定到新添加的元素。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-22
      相关资源
      最近更新 更多