Javascript 当用户按enter键且元素失去焦点时激发的事件
每当用户按下contenteditable字段上的enter键时,以及当用户对元素失去焦点时,我都希望打开一个模式。问题是,当用户按下enter键时,两个事件都会被触发(因此会打开两个模态)。我怎样才能找到一个舒适的折衷方案,只允许触发每个事件 代码如下: HTMLJavascript 当用户按enter键且元素失去焦点时激发的事件,javascript,angular,Javascript,Angular,每当用户按下contenteditable字段上的enter键时,以及当用户对元素失去焦点时,我都希望打开一个模式。问题是,当用户按下enter键时,两个事件都会被触发(因此会打开两个模态)。我怎样才能找到一个舒适的折衷方案,只允许触发每个事件 代码如下: HTML 您可以轻松地保留一个全局变量,用于检查模态当前是否打开 modal_open = false; openRenameWebsiteModal(event: any) { event.preventDefault();
您可以轻松地保留一个全局变量,用于检查模态当前是否打开
modal_open = false;
openRenameWebsiteModal(event: any) {
event.preventDefault();
event.stopPropagation();
if (this.websiteName !== event.target.innerHTML && !modal_open) {
modal_open = true;
const modal = this.modalService.open(BuilderRenameWebsiteModalComponent, {
windowClass: 'modal-holder',
centered: true
});
modal.componentInstance.websiteName = this.websiteName;
modal.componentInstance.newWebsiteName = event.target.innerHTML;
}
}
如果这在某些情况下不起作用,您可以在打开它之前使用检查它是否打开
removeLineBreaks(event: any) {
event.preventDefault();
event.stopPropagation();
BuilderService.removeLineBreaks(event);
}
openRenameWebsiteModal(event: any) {
event.preventDefault();
event.stopPropagation();
if (this.websiteName !== event.target.innerHTML) {
const modal = this.modalService.open(BuilderRenameWebsiteModalComponent, {
windowClass: 'modal-holder',
centered: true
});
modal.componentInstance.websiteName = this.websiteName;
modal.componentInstance.newWebsiteName = event.target.innerHTML;
}
}
modal_open = false;
openRenameWebsiteModal(event: any) {
event.preventDefault();
event.stopPropagation();
if (this.websiteName !== event.target.innerHTML && !modal_open) {
modal_open = true;
const modal = this.modalService.open(BuilderRenameWebsiteModalComponent, {
windowClass: 'modal-holder',
centered: true
});
modal.componentInstance.websiteName = this.websiteName;
modal.componentInstance.newWebsiteName = event.target.innerHTML;
}
}