Fullcalendar:检测周或日视图中的点击

时间:2015-07-01 01:48:02

标签: javascript fullcalendar frontend

我目前正在月视图中检测到双击事件。这很有效:

dayRender: (date, element) => {
  element.bind('dblclick', ...)
}

我正在寻找的是当用户处于日视图或周视图时执行相同操作的方法。我希望能够检测到点击事件,并获取他们点击的日期和时间(请注意,时间与日/周视图相关,但不是月视图。)

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

对于将来发现这一点的人来说,这是我提出的hacky解决方案:

因为fullcalendar不会在每个时间段呈现<div>(例如,一个div代表2015年1月1日下午1点至1点30分),而是直观地表示单个时间段作为交叉点一行和一列,我们需要一种方法来计算给定点击的时间。日信息已经以data-date属性的形式附加到每个列(日)DOM元素。我做的是我forked fullcalendar,并使用new data-time attribute为每一行(时间段)添加了时间信息。

然后,我听了onViewRender上的双击事件,找出了用户点击的元素,并从那些中得到了日期和时间段:

viewRender: (view, element) ->

  if view.type in ['agendaDay', 'agendaWeek']
    element.on 'dblclick', (event) ->

      els = document
        .elementsFromPoint event.pageX, event.pageY
        .filter (e) -> (e.hasAttribute 'data-date') or (e.hasAttribute 'data-time')
      date = (_.find els, (e) -> e.hasAttribute 'data-date').getAttribute 'data-date'
      time = (_.find els, (e) -> e.hasAttribute 'data-time').getAttribute 'data-time'

      return unless date and time

      startTime = moment "#{ date } #{ time }"
      endTime = (moment startTime).add 30, 'minutes' # clone + increment

这是一个真正的hacky解决方案,并混合了各种各样的问题。但是,在fullcalendar添加对timeClick事件的支持之前,这非常有用。

希望这有助于其他人!