在显示页面中,我显示了周期性事件发生的日期列表,并计算了所有日期的统计数据,例如最大值,最小值和连续日期之间的平均间隔。
我使用best_in_place gem来允许就地编辑日期。但是,每次更改日期时,都必须计算统计数据并从服务器重新呈现。
如何将回调函数挂钩到best_in_place编辑的完成,以便可以重新呈现统计数据?
这是我在show.html.erb中的Rails代码
<td id="event_date">
<%= best_in_place @event, :occur_date %>
</td>
在html中是
<td id="event_date">
<span class='best_in_place' id='best_in_place_event_132_occur_date' data-url='/events/132' data-object='event' data-attribute='occur_date' data-type='input'>2012-03-23</span>
</td>
我尝试了以下咖啡脚本代码:
jQuery ->
$("#best_in_place_event_*_occur_date").live 'ajax:complete', (evt, data, status, xhr) ->
alert "a date has changed"
这似乎不起作用,编辑日期(occurrence _date)后没有任何反应。
任何人都知道如何在成功的best_in_place编辑后触发事件?
答案 0 :(得分:2)
好吧,看看源代码,似乎best_in_place在它的loadSuccessCallback中正确触发了ajax:success事件。这意味着您应该能够使用一些jQuery将自己的函数绑定到已更改的事件。
$(".best_in_place").live 'change', (event) ->
alert "Hello, World!"
答案 1 :(得分:1)
至于你的例子:
<td id="event_date">
<%= best_in_place @event, :occur_date, :classes => 'bip_date' %>
</td>
$('.bip_date').bind("ajax:success", function(){
alert("a date has changed")
});
// or: $('.event_data .best_in_place').bind(...)
'ajax:success'事件在成功时触发。
使用bind:
$('.best_in_place').bind("ajax:success", function ()
{$(this).closest('tr').effect('highlight'); });
要绑定特定于特定字段的回调,请使用 帮助器方法中的'classes'选项,然后绑定到该类。
<%= best_in_place @user, :name, :classes => 'highlight_on_success' %> <%= best_in_place @user, :mail, :classes => 'bounce_on_success' %> $('.highlight_on_success').bind("ajax:success", function(){bip_date}); $('.bounce_on_success').bind("ajax:success", function(){$(this).closest('tr').effect('bounce'));});