input輸入中文未完成時觸發(fā)change事件

最近做pc端時發(fā)現(xiàn),在input輸入中文時,拼音階段就觸發(fā)了change事件,造成了很多異常請求,如何修復(fù)此類問題呢?先了解一下以下事件:

輸入中文時會觸發(fā)的三個事件

compositionstart

當(dāng)用戶使用拼音輸入法開始輸入漢字時,這個事件就會被觸發(fā)。

compositionupdate

input 事件在輸入過程中、內(nèi)容變化后就觸發(fā)

compositionend

輸入完成時會觸發(fā)

change事件

鍵盤任意按鍵都會觸發(fā),無論中文還是英文,中文的輸入拼音的過程中也會觸發(fā)

需要解決的問題場景

輸入中文時:輸入完成時觸發(fā)接口請求;輸入英文、數(shù)字時:即時觸發(fā)接口請求;

解決:

設(shè)置中間變量isOnComposition為false,當(dāng)觸發(fā)compositionstart時置為true,當(dāng)觸發(fā)compositionend時置為false,并觸發(fā)接口請求;在change事件中監(jiān)聽,當(dāng)isOnComposition為true時,不觸發(fā)接口請求,為false時觸發(fā)接口請求。

  const handleComposition = (e) => {
    if (e.type === 'compositionend') {
      isOnComposition = false;
      handleChange();
    } else {
      isOnComposition = true;
    }
  }

  const handleChange = (e) => {
    if(!isOnComposition) {
      // 在此處觸發(fā)接口請求
    }
  }

// 標(biāo)簽處 -- 以下為react 寫法
 <Input  placeholder="請輸入" onChange={handleChange} onCompositionEnd = {handleComposition} 
 donCompositionStart = {handleComposition} />
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容