在最新版本的“完整日历”中,我有一个环绕事件资源的链接。双击事件资源名称时,我想弹出一个模式。
我遇到的问题是,一旦日历加载,它就会为每个资源加载每个模式,就好像我双击它们一样。
还有其他人遇到这个问题吗,有人对如何解决它有任何想法吗?
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>";
},
答案 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
(当然,如果要在不转义所有字符的情况下减少代码的混乱度,可以使用createElement
和addEventListener
创建超链接并设置双击事件处理程序代替。