0

我不确定是否有其他人遇到过这个问题。我有一个需要在自动建议上显示的数组元素列表。我最大的问题是我需要根据类别名称中的匹配字符串显示所有类别。

例如 - 如果我在搜索框中键入 auto 它应该在自动建议上显示匹配记录,例如 -

工业->自动化-> 贡献
建设 ->自动化-> 工业
-> Es自动化-> TNB
Cal -> Thead auto -> 纺织

它应该根据匹配的字母排序。如果前 3 个字符与类别匹配,则应首先显示该类别,然后显示第二次出现和最后一次出现,依此类推。我在 jquery 中使用 regx 来显示匹配的字符串。我会更喜欢 jquery else php 中的解决方案。

如果我得到一些解决方案,那将非常有帮助。

4

1 回答 1

0

我使用这个绑定到按键:

jQuery('select.myClass').find('option').hide();
jQuery('select.myClass').find('option:hidden[value*="' + searchFor + '"]').show();

可能不是世界上最有效的代码,但我针对一堆选择运行它,每个选择包含多达数百个选项,并且还没有出现主要的性能问题。这同样适用于其他任何事情,因为它所做的只是使用 jQuery 的*=选择器。

此处用于 *= 选择器,或类似此处用于 :contains 选择器

然后,在 jQuery 中实现正确排序所需要做的就是选择众多 jQuery 排序插件之一(或使用本机 javascript 排序函数)并使用如下函数进行排序:

var searchFor = 'foo';
function sortByPos(val1, val2)
{
  return (val1.indexOf(searchFor) > val2.indexOf(searchFor) ? +1 : -1);
}
于 2013-05-15T08:34:22.990 回答