2016-02-23 60 views
0

我想在我的文本輸入上實現自動完成功能,使用jQuery通過監視更改事件並在每次更改時查詢我的數據庫。jQuery onchange事件,如何忽略太頻繁的變化?

我知道有一些自動完成插件,但我正在做一些模糊搜索,所以關鍵字'ad'可能會導致像'abort'或'and'這樣的詞。糾正我,如果我錯了,我發現大多數插件做精確搜索。

但是,我不想過於頻繁地進行數據庫查詢,也就是說,我只想在文本輸入更新但尚未更新一小段時間(如200毫秒)時執行查詢。這樣我就可以忽略用戶的高速輸入。

誰能告訴我該怎麼做?

+0

看看這個職位。它使用Jquery UI自動完成併爲其添加模糊搜索。它可能有幫助。 http://www.tomsquest.com/blog/2011/05/better-autocompletes-with-fuzzy-matching/ – bos570

+0

@ bos570,謝謝,我會研究一下! –

回答

2

你可以使用類似的東西來查詢。

var timeouted=null; 
$(e).on('change',function(){ 
    clearTimeout(timeouted); 
    timeouted = setTimeout(function(){ 
     //database query 
    }, 200) 
}) 
2

使用setTimeout()作爲變量存儲,然後在輸入清除超時和重置。如果經過時間> =所需超時,請進行數據庫查詢。

工作示例在這裏:https://jsfiddle.net/c2s1sj6f/7/