javascript - 使用 collection_select() 过滤 fullCalendar() 上的事件

标签 javascript html ruby-on-rails fullcalendar

在我的页面上,我使用下拉框来过滤 fullCalendar() 上显示的事件。我的代码如下:

JavaScript

$(document).ready - >
  $("#msCalendar").fullCalendar({
    header: left: "prev today"
    center: "title"
    right: "month,basicWeek next"
    editable: true
    events: "marketingSchedule"
    eventRender: (event, element, view) - >
      return ['all', event.quoted_by].indexOf($('#msQuotedBy').val()) >= 0
    eventClick: (event) - >
      setTimeout(- >
        eventClickFunction(event)
      )
  })

$('#msQuotedBy').change - >
  $('#msCalendar').fullCalendar('rerenderEvents')

HTML

<span id="msQuotedBySearch">
  <b>Filter by Initials: </b>
  <select id="msQuotedBy">
    <option value="all">All</option>
    <option value="ZR">ZR</option>
    <option value="TM">TM</option>
    <option value="jh">jh</option>
    <option value="TD">TD</option>
    <option value="LG">LG</option>
    <option value="BCS">BCS</option>
    <option value="DLH">DLH</option>
    <option value="jr">jr</option>
    <option value="CP">CP</option>
    <option value="LR">LR</option>
    <option value="SA">SA</option>
    <option value="TN">TN</option>
    <option value="DB">DB</option>
    <option value="TF">TF</option>
    <option value="dev">dev</option>
    <option value="BK">BK</option>
  </select>
</span>

使用这两个代码块我的日历可以正确更新。显然 HTML 应该更好,因为它不会使用数据库中的用户动态更新下拉框。

我已在 HTML 中尝试过此操作,它可以正确填充下拉框,但不再更新日历。

<span id="msQuotedBy">
  <b>Filter by Initials: </b>
  <%= collection_select(:user, :initials, User.all, :id, :initials) %>
</span>

关于如何使用 collection_select() 或其他方法来过滤我的日历,有什么想法吗?

最佳答案

在第二个示例(使用 Rails)中,存在问题:

<span id="msQuotedBy">

在您的手工编码示例中,“msQuotedBy”是选择的 ID,而不是范围。在JS中,$('#msQuotedBy').val()尝试读取 ID 为“msQuotedBy”的 HTML 元素并获取其值。 <spans没有值,但是<selects做。

您通过将 ID 移动到另一个元素而搞砸了。 ID 应该唯一地标识该元素(因此称为“ID”)——随机移动它会带来麻烦。

确保您的 Rails 代码在 <select 上设置了正确的 ID当它创建它时。根据您的评论,正确的整体代码应该是:

<span id="msQuotedBySearch">
  <b>Filter by Initials: </b>
  <%= collection_select(:msQuotedBy, :select, User.all, :initials, :initials) %>
</span>

关于javascript - 使用 collection_select() 过滤 fullCalendar() 上的事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51507512/

相关文章:

javascript - 从最后一个值更新位置/转换(仪表图/d3.js)

javascript - 自动移动网站重定向

jquery - 使用突出显示的图像跨浏览器替换 HTML 复选框

ruby-on-rails - 预加载自引用多态关联

ruby-on-rails - after_create 无权访问在 before_created 回调期间创建的关联记录?

javascript - 任何现有的 javascript 库可以更改 svg 填充颜色?动画优先

javascript - 在对象数组中查找特定属性

javascript - HTML、Javascript 中的自定义事件

jquery 选项选择过滤器由其他选项选择

ruby-on-rails - RailsAdmin DSL - 显示所有字段,只有一个 read_only