0

我想使用 JavaScript 对列表进行“包含”搜索。例如我有一个列表:

AM波兰
AM 认证。
增强现实

现在我有一个文本框,我已经完成了搜索(以开头),就像我输入“A”一样,所有记录都以 A 开头。

但是我想如果我输入“Pol”,那么应该显示“AM Polland”记录。

实际上我有一个很大的选择列表...上面我有一个文本框..我想根据我在该文本框中键入的字母进行搜索。但我想要包含搜索而不是开头。

我不知道该怎么做,我正在学习 JavaScript。请帮助一些代码。

4

2 回答 2

1

jQuery UI 中有一个自动完成插件。你可以更好地利用它。

特征:

  1. 默认功能
  2. 口音折叠
  3. 类别
  4. 组合框
  5. 自定义数据和显示
  6. 多个值
  7. 多个,远程
  8. 远程 JSONP 数据源
  9. 远程数据源
  10. 带缓存的远程
  11. 可滚动的结果
  12. XML 数据解析一次

简单示例:

<!doctype html>
 
<html lang="en">
<head>
    <meta charset="utf-8" />
    <title>jQuery UI Autocomplete - Default functionality</title>
    <link rel="stylesheet" href="http://code.jquery.com/ui/1.9.1/themes/base/jquery-ui.css" />
    <script src="http://code.jquery.com/jquery-1.8.2.js"></script>
    <script src="http://code.jquery.com/ui/1.9.1/jquery-ui.js"></script>
    <link rel="stylesheet" href="/resources/demos/style.css" />
    <script>
    $(function() {
        var availableTags = [
            "ActionScript",
            "AppleScript",
            "Asp",
            "BASIC",
            "C",
            "C++",
            "Clojure",
            "COBOL",
            "ColdFusion",
            "Erlang",
            "Fortran",
            "Groovy",
            "Haskell",
            "Java",
            "JavaScript",
            "Lisp",
            "Perl",
            "PHP",
            "Python",
            "Ruby",
            "Scala",
            "Scheme"
        ];
        $( "#tags" ).autocomplete({
            source: availableTags
        });
    });
    </script>
</head>
<body>
 
<div class="ui-widget">
    <label for="tags">Tags: </label>
    <input id="tags" />
</div>
 
 
</body>
</html>
于 2012-11-04T12:58:07.660 回答
0

我猜你当前的代码只是检查substr适当的长度。你需要的是一个正则表达式。

// first, a helper function to escape regex characters. Source: phpJS
function preg_quote(str) {
    return (str + '').replace(/[.\\+*?\[\^\]$(){}=!<>|:\-]/g, '\\$&');
}
// create the regex (assuming "input" is the variable containing the search string)
var regex = new RegExp(preg_quote(input)), i;
// now search for it (assuming "list" is the array of strings containing the data)
for( i in list) {
    if( list.hasOwnProperty(i)) {
        if( list[i].match(regex)) {
            // it's a match! do something with it
        }
    }
}
于 2012-11-04T12:57:00.717 回答