我想添加jquery-ui日期選擇器到我的應用程序的嵌套窗體字段,但是當我用新字段更新DOM時,我沒有看到日期選擇器在創建的字段上。這是我爲應用程序工作的代碼。將日期選擇器添加到嵌套窗體字段
<%= form_for(@load) do |f| %>
<%= f.error_messages %>
<%= f.fields_for :destinations do |builder| %>
<%= render "destination_fields", :f => builder %>
<% end %>
<p><%= link_to_add_fields " Add Destination", f, :destinations %></p>
<% end %>
_destination_fields.html.erb
============================
<fieldset>
<%= f.text_field :arrival_date, :placeholder => "From:", :class => "datepicker" %>
</fieldset>
添加字段中的CoffeeScript的:
jQuery ->
$('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()
添加字段的功能:
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 btn btn-primary icon-plus", data: { id: id, fields: fields.gsub("\n",""), :class => "datepicker" })
end
我寫來顯示日期選擇器中的JavaScript:
$(function() {
$(".datepicker").datepicker({ dateFormat: 'yy-mm-dd', autoSize:true });
});
$(function() {
$('.add_fields').on('click', function(){
$(this).datepicker({ dateFormat: 'yy-mm-dd', autoSize:true });
});
});
我有對於堆棧溢出這個問題的其他解決方案,但他們的實現都沒有爲我的問題工作。正如你可以看到JavaScript檢查任何字段上的「datepicker」類,然後將datepicker類添加到它。我非常肯定你需要添加一個回調函數到點擊時添加新字段的按鈕,這是我所做的,但我不確定爲什麼我的函數不能正常工作。如果您需要更多的信息來幫助解決這個問題,我會很樂意提供。
解決方案編輯:
我改變了CoffeeScript的文件以下,使這項工作按照預期:
jQuery ->
datepicker_update = -> $("input.datepicker").datepicker({ dateFormat: 'yy-mm-dd', autoSize:true })
$('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_update()
這是從兩個下方
link_to(name,'#',class:「add_fields btn btn-primary icon-plus」,data:{id:id,fields:fields.gsub(「\ n」,「」),: class =>「datpicker」}) –
修正了錯字,但隻影響按鈕的數據類,而不是我試圖定位的輸入字段。 – tomciopp
好吧,所以我不確定你的鏈接是做什麼的,但在js點擊功能中,你將dtepicker附加到鏈接標籤而不是文本字段。 –