具有单击事件的完整日历事件资源

时间:2019-09-15 10:48:25

标签: javascript html fullcalendar fullcalendar-scheduler fullcalendar-4

在最新版本的“完整日历”中,我有一个环绕事件资源的链接。双击事件资源名称时,我想弹出一个模式。

我遇到的问题是,一旦日历加载,它就会为每个资源加载每个模式,就好像我双击它们一样。

还有其他人遇到这个问题吗,有人对如何解决它有任何想法吗?

 resourceRender: function(renderInfo) {
    if(renderInfo.resource.extendedProps.unassign==false)
      renderInfo.el.querySelector('.fc-cell-text').innerHTML = "<a ondblclick=" + showProfileModal('staff', renderInfo.resource.id) + " class='text-staff'>" + renderInfo.resource.title + "</a>";
    else
      renderInfo.el.querySelector('.fc-cell-text').innerHTML = "<span class='text-red'>" + renderInfo.resource.title + "</span>";
  },

1 个答案:

答案 0 :(得分:2)

问题在于您创建超链接的方式:

.innerHTML = "<a ondblclick=" + showProfileModal('staff', renderInfo.resource.id) + " class='text-staff'>"

在这种情况下,showProfileModal()不是您的HTML字符串的一部分,而是被视为要执行的实际代码……因此,它就会被执行。

您正在使用它,就好像该函数的结果包含在HTML字符串中一样。如果希望将其视为文本,可以将某些内容添加到HTML声明中,然后将其包含在字符串中:

.innerHTML = '<a ondblclick="showProfileModal(\'staff\',\'' + renderInfo.resource.id + '\')\" class=\"text-staff\">'

演示:https://codepen.io/ADyson82/pen/WNeKYav?&editable=true&editors=001

(当然,如果要在不转义所有字符的情况下减少代码的混乱度,可以使用createElementaddEventListener创建超链接并设置双击事件处理程序代替。