0

JavaScript を使用して、リストに対して「含む」検索を実行したいと考えています。たとえば、リストがあります:

AM ポランド
AM認定。
AR アムズ

今、私はテキストボックスを持っていて、「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 に答える