2012-02-08 84 views
1

我需要一個jQuery插件來搜索包含10到1000個選項的大型選擇框。起初,http://harvesthq.github.com/chosen/似乎是可行的,但我需要改變其功能或替代插件。jQuery搜索大型選擇框

我有一系列選擇框,範圍從10到1000個選項。當用戶鍵入一個匹配他們正在查找的選項的字符串時,我需要一種方法來提供選擇框的過濾器。我發現http://harvesthq.github.com/chosen/它看起來不錯,功能強大,並且易於使用當前的html實現。

我唯一的問題是,搜索只匹配單詞的開頭,而不匹配單詞的中間。查看選定網頁上的第一個例子,「阿爾巴」匹配「阿爾巴尼亞」,但「巴尼亞」不匹配「阿爾巴尼亞」。我需要一個解決方案,「bania」將匹配「阿爾巴尼亞」,因爲在我的選擇列表中,大多數選項在最後都以數字來區分。有沒有人有改變選擇具有此功能的經驗,還是有一個不同的jQuery插件提供此功能,同時也看起來很好,功能和易於實現?我搜索並發現了其他插件,但它們要麼沒有很好的風格,要麼看起來更難以實現。

+0

我也曾考慮http://jqueryui.com/demos/autocomplete/,但我找不到它的一個例子創造一些東西作爲選擇的多重選擇。 – Stormchao 2012-02-08 17:01:37

回答

1

哇,這是我聽說過的第一個,這真是太棒了!

基本上我發現這個線(chosen.jquery.js線732):

regex = new RegExp('^' + searchText.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"), 'i'); 

而只是刪除了 '^',如下所示:

regex = new RegExp(searchText.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"), 'i'); 

這樣做,我發現,在演示「巴尼亞」現在將會發現阿爾巴尼亞。

當然,這是15分鐘......看一些其他的東西,你可能要考慮:

  • 這應該是可選的? (也許給用戶一個複選框)
  • 也許winnow_results應該完全重新編寫,以適應,例如上述更改的行開始

    }否則,如果(option.html.indexOf(」「) > = 0

    現在是多餘的

「希望這有助於

+0

該解決方案效果很好。我一定會測試它並查看功能,看看是否會引起任何問題,但看起來這是一個完美的答案。謝謝。 – Stormchao 2012-02-08 18:46:09