除非我刷新,否则JavaScript / Coffeescript不会执行

时间:2014-07-26 01:36:49

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

我有一些coffeescript:

http://jsfiddle.net/jdell64/9v646/

利用jquery ui datepicker。在页面加载时,它会获得一系列可用日期(一次一个月)并显示它们。这适用于IE,但不适用于Firefox或Chrome。我必须刷新页面才能使其正常工作。

基本上,

$ ->
  full_days = []
  partial_days = []
  getDays = (date) ->
     # return the available days for a given month (ajax call)

  getDays()

  formatDays = (date) ->
    # apply a 'full-day' class to days with 24 hours available and 'partial-day' if they have < 24 hours

  availableHours = (day) ->
     # manipulate the json response and make an array

  showdatepicker = ->
    $('.datepicker').datepicker(
     ...
     # make my text field a datepicker
     )
showdatepicker()

我试图在这里留下赤裸裸的骨头,但我可以张贴所有东西。

如何让jquery-UI datepicker在页面加载之前对数据库进行ajax调用,每次更改月份时都会这样做?

编辑:

我在coffeescript中添加了一些console.log()。我在一开始就放了一个。似乎javascript根本没有执行,除非我刷新页面(除非我刷新否则没有输出)。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

我遇到的问题是在Gemfile中:turbolinks。 Turbolinks的行为与设计一致 - 除非我刷新页面,否则它不会重新加载页面。这在我的IE浏览器中起作用的原因是当turbolinks失败时(旧浏览器)它正常失败并允许重新加载页面(我从Rails Cast #390学到了所有这些。

我需要做的只是

  1. 将我的代码放在变量

    ready = - &gt;         (我的所有代码)

  2. 在文档就绪

    上调用此变量

    (文档)$。就绪(就绪)

  3. 告诉关于它的turbolinks

    $(document).on(&#39; page:load&#39;,ready)