2012-02-08 83 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