在下拉列表中搜索包含特定文本的项目

时间:2012-11-04 12:45:59

标签: javascript

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

AM Polland
AM Certification.
AR Ams

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

但是我想要输入“Pol”然后显示“AM Polland”记录。

实际上我有一个很大的选项列表...上面我有一个文本框..我想根据我在该文本框中输入的字母进行搜索。但我想包含搜索不是以#。p>开头的。

我不知道该怎么做,我有点学习JavaScript。请帮忙解决一些代码。

2 个答案:

答案 0 :(得分:1)

jQuery UI中有一个autocomplete插件。你可以更好地利用它。

特点:

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

    <!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>
    

答案 1 :(得分: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
        }
    }
}