Javascript 当用户按enter键且元素失去焦点时激发的事件

Javascript 当用户按enter键且元素失去焦点时激发的事件,javascript,angular,Javascript,Angular,每当用户按下contenteditable字段上的enter键时,以及当用户对元素失去焦点时,我都希望打开一个模式。问题是,当用户按下enter键时,两个事件都会被触发(因此会打开两个模态)。我怎样才能找到一个舒适的折衷方案,只允许触发每个事件 代码如下: HTML 您可以轻松地保留一个全局变量,用于检查模态当前是否打开 modal_open = false; openRenameWebsiteModal(event: any) { event.preventDefault();

每当用户按下contenteditable字段上的enter键时,以及当用户对元素失去焦点时,我都希望打开一个模式。问题是,当用户按下enter键时,两个事件都会被触发(因此会打开两个模态)。我怎样才能找到一个舒适的折衷方案,只允许触发每个事件

代码如下:

HTML


您可以轻松地保留一个全局变量,用于检查模态当前是否打开

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;
    }
  }