vue+iview實現拼音、首字母、漢字模糊搜索

        最近項目做的後臺管理系統中,要求實現一個支持拼音、首字母和漢字模糊搜索的下拉框。項目是用vue+iview做的,iview中有select遠程搜索。但是,iview框架也有弊病就是會將輸入框中的輸入值進行過濾,如果你搜英文的,ok是可以實現的,看人家例子準備的數據也是英文的,但咱要求的是中文也能搜索,首字母和拼音都支持。

        輸入中文,因爲框架中是根據value取值的,所以你輸入的拼音和首字母在後臺返回的數據中是沒有的,所以就過濾掉了。後臺是支持模糊搜索的,搜索的數據也是可以返回的,但就是賦不上值。想了好多辦法都行不通,感覺這個框架有點雞肋,也不支持拼音首字母搜索,以爲只有改源碼才能實現。後來終於想出了辦法,雖然有點麻煩,但只要能實現了就行,你說呢?

先看效果圖:

支持漢字:

支持拼音:

支持首字母:

 

解決思路:

在新建的頁面中:在遠程搜索的方法裏,後臺返回的數據時給做下處理,把返回的value值後邊拼接一個特殊字符,再拼接上你輸入框輸入的值,這樣因爲value裏含有你輸入的值就不會被過濾掉,因而就能賦上值了。

校驗規則修改:如果有表單校驗,要在校驗時改變校驗規則type: 'string',因爲拼接完就是字符串了。

submit提交方法中:在submit提交表單方法裏再做下處理,把剛纔拼接的字符串,用特殊字符處理成數組取第1位就是原來的value值了,不過是字符串形式了,要讓後臺接收字符串形式的。

編輯回顯頁面中:要讓後臺配合返回的id值是字符串形式,返回的下拉列表中每個數組對象的value值也是字符串形式的。如果後臺不改,只能自己再循環遍歷處理成字符串。

是不是說的一臉懵逼,直接上圖看的更清楚些:

 

頁面結構:

 

校驗規則:

單選下拉框type是字符串,多選type要求是array類型

 

遠程搜索方法:

這個地方單選框和多選框處理方法一樣

 

表單submit提交方法的傳參中:

單選下拉框把選的v-model裏的值(這裏綁定的是value值)進行處理,把剛纔拼接的特殊字符和輸入值去掉,取前面的id值

多選因爲取到的v-model值是一個數組,所以要用map函數來把每一項都處理一下

以上就步驟就實現了拼音、首字母(不分大小寫)和漢字的搜索,但必須注意前提是需要後臺支持這些類型的搜索且能正確返回數據

因爲我編輯和新建用的是同一個頁面所以還要編輯回顯數據:

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章