Javascript 模糊事件在按下键时触发

Javascript 模糊事件在按下键时触发,javascript,events,polymer,rendering,lit-html,Javascript,Events,Polymer,Rendering,Lit Html,我需要在回车键和模糊事件上获得一个输入值。因此,我创建了两个函数: <input @blur=${this._setNameByBlur} @keydown=${this._setNameByEnter}/> 处理回车键 byEnter(e) { const text = e.currentTarget.value; if (e.type === "keydown") { if (e.key === 'Enter' || e

我需要在回车键和模糊事件上获得一个输入值。因此,我创建了两个函数:

   <input @blur=${this._setNameByBlur} @keydown=${this._setNameByEnter}/>
处理回车键

  byEnter(e) {
    const text = e.currentTarget.value;
    if (e.type === "keydown") {
      if (e.key === 'Enter' || e.keyCode === 13) {
        e.preventDefault();
        e.stopPropagation();
        this.dispatchEvent(new CustomEvent("save-entry", { detail: text, composed: true, bubbles: true}));
      }
  }
 }
问题是,当我按下“回车”键时,除了执行
byBlur
函数外,还有执行
byEnter
——我认为这基本上是因为按下回车键时,我实际上失去了焦点,这就是原因。正在寻找解决该问题的密钥

这就是我想到的

  _setNameByBlur(e) {
    const text = e.currentTarget.value.trim();
    if (e.sourceCapabilities !== null) {
      e.preventDefault();
      this.dispatchEvent(new CustomEvent("save-entry", { detail: text, composed: true, bubbles: true}));
    }
  }
当模糊事件在“回车”后触发时,按其“null”

所以我刚刚添加了一个条件

  _setNameByBlur(e) {
    const text = e.currentTarget.value.trim();
    if (e.sourceCapabilities !== null) {
      e.preventDefault();
      this.dispatchEvent(new CustomEvent("save-entry", { detail: text, composed: true, bubbles: true}));
    }
  }