FullCalendar 在事件内添加复选框

问题描述 投票:0回答:1

我需要在事件卡内添加一个复选框。

复选框将用于选择事件而不是打开它。

如果用户单击活动本身(而不是复选框),活动将打开进行编辑。

但是如果用户单击复选框,则会选择该事件而不是打开它。

我正在使用 eventClick 打开事件,并且工作正常。 我已在事件 HTML 上添加了复选框。

但是,当我单击复选框时,会触发 eventClick 而不会触发复选框上的 (change) 事件。

我正在使用 Angular。

参见下面的代码:

活动点击:

eventClick: this.handleEventClick.bind(this),

活动 HTML

'<div>' +
   '<input class="form-check-input" (change)="ShiftSelect($event)" type="checkbox" />' +
'</div>'

事件未触发:

ShiftSelect(values:any){
    this.isChangeOption = true;
}

事件触发:

handleEventClick(info: EventClickArg) {}

活动: enter image description here

我尝试删除 eventClick 以查看复选框事件是否会被触发,但没有。

javascript angular fullcalendar
1个回答
0
投票

您似乎遇到了事件传播问题,其中复选框上的单击事件向上冒泡到父容器,触发eventClick函数而不是绑定到复选框的ShiftSelect函数(change)活动。

HTML 文件

'<div (click)="openEventForEdition(info)">' +
   '<input class="form-check-input" (change)="shiftSelect($event)" type="checkbox" />' +
'</div>'

TypeScript 文件

openEventForEdition(info: EventClickArg) {
    // Your logic to open the event for edition
}

shiftSelect(event: Event) {
    // Prevent the event from bubbling up to the parent container
    event.stopPropagation();
    
    // Your logic for selecting the event
    this.isChangeOption = true;
}

通过在 shiftSelect 函数中调用 event.stopPropagation(),可以防止单击事件向上传播到父容器,确保当复选框被选中时,仅触发复选框上的 (change) 事件处理程序clicked,而不是 eventClick 函数。

© www.soinside.com 2019 - 2024. All rights reserved.