2014-07-17 33 views
1

我目前使用這兩個插件一起:jQuery的自動完成(devbridge)和檢索輸入

https://github.com/stidges/jquery-searchable

https://github.com/devbridge/jQuery-Autocomplete

我的問題是,當我選擇從自動完成下拉菜單的一個選項(通過鼠標點擊),它會填充textarea,但不會觸發jQuery可搜索的過濾器操作。但是,如果我使用鍵盤(使用向下箭頭鍵)從自動完成下拉菜單中選擇一個選項,那麼jquery可搜索的作品。

需要注意的一件事是,如果在選擇選項之後在文本框中進行任何類型的按鍵操作(無論是輸入空格還是僅用左/右箭頭移動光標),「鼠標點擊」鍵。在發生任何這些行爲時,jquery可搜索的腳踢和可搜索的項目將像往常一樣被過濾。

我猜測點擊和鍵盤選擇將數據寫入輸入字段的方式必須有所不同。

另一方面,如果我可以在選擇一個選項後模擬輸入內的按鍵。我不希望有依靠的hackish按鍵模擬如果可能的話,但對問題的緣故,這裏是我曾嘗試(不工作):

$('#dpt-search').autocomplete({ 
     lookup: dpts, 
     minLength: 0, 
     onSelect: function (suggestion) { 
      $('#dpt-search').trigger('keypress'); 
     } 
}); 

所以基本上,

1)有沒有辦法讓jquery-autocomplete選項通過鼠標點擊選擇操作方式相同的方式通過鍵盤選項選擇工作?

2.)如果沒有,是否有辦法確保在我選擇它後觸發jquery可搜索的某些模擬鍵盤活動在輸入元素中發生?


這裏是活生生的例子:在「中心」在搜索字段http://cpira.tamucc.edu/membership/findrep/

嘗試打字,然後鼠標點擊第一個選項。該字段將自動填寫,但searchable不會過濾列表。

清除該字段,然後再次搜索「中心」,但此類型使用鍵盤的向下箭頭鍵。每次選擇(當您使用箭頭鍵向下移動列表時)都會更新searchable過濾器。

+0

你能分享一個鏈接到託管網站或jsFiddle嗎? – bobthyasian

回答

1

保留jQuery,但將keypress更改爲changekeyup。根據從第61行(具體爲64)開始的source,搜索的綁定事件是keyupchange。我還會在.trigger()之前添加一個.focus(),以確保輸入是選擇/聚焦。

+1

工作就像一個魅力,謝謝。 +50給你,好的先生。 – skippr