vue--H5實現(xiàn)模糊查找

一、需求:

需要根據(jù)一個本地的數(shù)據(jù),實現(xiàn)本地數(shù)據(jù)的模糊查找。具體需求就是根據(jù)本地數(shù)據(jù),在手機輸入框輸入一個字或者多個字時實現(xiàn)模糊查找的效果。

二、實現(xiàn)原理:

正則匹配

三、難點:

1、知道用戶正在輸入的是中文還是英文。如果是中文,在打字的時候,不能觸發(fā)模糊搜索的方法,如果是輸入的英文,那么就應(yīng)該在輸入第一個字母時就要觸發(fā),所以在vue中,input的change事件顯然是不能滿足的,因為change事件在input改變時就會觸發(fā),不會分辨是英文還是中文。所以,這里我們用到input的兩個屬性:

  • compositionstart:事件觸發(fā)于一段文字的輸入之前,通俗來說就是中文輸入開始時,包括一連串的鍵盤操作。
  • compositionend:當(dāng)文本段落的組成完成或取消時觸發(fā),所以有了這兩個事件我們就可以正確的觸發(fā)模糊搜索事件。
代碼:
<input 
  v-model="inputMachine"
  type="text"
  placeholder="請輸入內(nèi)容進行模糊查找"
  maxlength="10"
  @compositionstart="flag = true"
  @compositionend="flag = false"
>
// 模糊查詢方法,keyWor為input輸入的內(nèi)容,dataBase為數(shù)據(jù)源
fuzzyQuery(keyWord, dataBase){
  let reg =  new RegExp(keyWord);
  let arr = [];
  for (let i = 0; i < dataBase.length; i++) {
  if (reg.test(dataBase[i].sname)) {
  arr.push(dataBase[i]);
  }
  }
  return arr;
},                        

觸發(fā)這個模糊查找方法,可以通過vue中的wacth事件觸發(fā),或者change事件,判斷flag為true或者false來執(zhí)行方法。但是還有一個問題就是,如果輸入的中文或者英文太快的話,就會不斷調(diào)用方法,就會出現(xiàn)如果上一次的輸入結(jié)果還沒有查找出來,又觸發(fā)了下一個查找,就會有最后一次輸入內(nèi)容查找不正確的情況。所以針對這個情況,做了一個節(jié)流的處理。代碼如下:

watch:{
    inputMachine(){
      if(this.timer){
        clearTimeout(this.timer)
      }
      this.timer = setTimeout(() =>{
        this.changeMachine()
      },1500)
    },
    deep: true,
  },

觸發(fā)的時間長短可以根據(jù)需求自己設(shè)定,這樣就不會造成上述問題了,前端模糊查找也實現(xiàn)了。

下面是compositionend和compositionstart的參考文檔;

https://developer.mozilla.org/zh-CN/docs/Web/Events/compositionend

https://developer.mozilla.org/zh-CN/docs/Web/Events/compositionstart

?著作權(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ù)。

相關(guān)閱讀更多精彩內(nèi)容

  • ??JavaScript 與 HTML 之間的交互是通過事件實現(xiàn)的。 ??事件,就是文檔或瀏覽器窗口中發(fā)生的一些特...
    霜天曉閱讀 3,690評論 1 11
  • 本文介紹移動端輸入框 上觸發(fā)的與用戶輸入有關(guān)的事件,總結(jié)移動端與pc端上這些事件的差別,主要關(guān)注點在事件觸發(fā)的順序...
    ykliu閱讀 10,172評論 0 3
  • (續(xù)jQuery基礎(chǔ)(1)) 第5章 DOM節(jié)點的復(fù)制與替換 (1)DOM拷貝clone() 克隆節(jié)點是DOM的常...
    凜0_0閱讀 1,511評論 0 8
  • 讀書足以恰情,足以博采,足以長才。 其恰情也,最見于獨處幽居之時,其博采也,最見于高談圓論之中,其長才也,最見于處...
    英語老師青城閱讀 1,120評論 1 1
  • 心之何如,有似萬迷津渡,其中并無舟子可以渡人。除了自渡,他人愛莫能助。 ...
    賣眼鏡的畫畫熊Rx閱讀 214評論 2 2

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