0

単純な json 形式 (ヘッダーなし) の名前を含むテキスト ファイルがあります: [ "Name1", "Name2", "Name3", (...)]

オートコンプリート入力フォームを含む私の HTML ページには、次の jquery スクリプトがあります。

var tags = "\path\to\jsontxtfile.txt";

$( "#id_name" ).autocomplete({ 
source: function( request, response ) {
        var matcher = new RegExp( "^" + $.ui.autocomplete.escapeRegex( request.term ), "i" );
        response( $.grep( tags, function( item ){
            return matcher.test( item );
        }) );
    }
});

通常のオートコンプリートを使用する場合、ファイルへのパスを関数なしでソースに入力するだけで (ソース: "\path\to\jsontxtfile.txt")、うまく機能しますが、jquery オートコンプリートから最初の文字の一致のみを使用しようとするとドキュメンテーション 動作していません。tags 変数に何を配置すればよいかわかりません。ドキュメントでは、ハードコーディングされたタグ変数 (var tags = [ "c++", "java", "php", "coldfusion", "javascript", "asp", "ruby" ]; など) を使用していましたが、次のようなファイルがあります1600以上の名前があり、彼らが示唆するようにHTMLコード内に入れたくありません.

4

2 に答える 2

1

コードがサーバーからファイルを取得することはありません。var tagsパスを表す単なる文字列です。しかしtags、そのファイルに含まれるデータの配列であるかのように解析しようとしています

非常に簡単な解決策の 1 つは、ページのスクリプト タグにファイルを含めることです。

<script src="\path\to\jsontxtfile.txt"></script>

これには、ファイルに含まれる配列を定義するために、実際にファイル内に変数を作成する必要があります。ファイル追加の最初にvar tags=

含まれると、コード内の配列にアクセスできますtags

これが実行可能な解決策でない場合は、AJAX を使用してファイルを取得することもできます。

/* retrieve file*/
$.getJSON("\path\to\jsontxtfile.txt", function(tags) {
    /* data now available, initialize autocomplete*/
    $("#id_name").autocomplete({
        source: function(request, response) {
            var matcher = new RegExp("^" + $.ui.autocomplete.escapeRegex(request.term), "i");
            response($.grep(tags, function(item) {
                return matcher.test(item);
            }));
        }
    });
})
于 2012-12-25T15:48:44.377 に答える
0

minCharsjQuery Autocomplete プラグインのオプションを設定する必要があると思います。以下を試してください

var tags = "\path\to\jsontxtfile.txt";

$( "#id_name" ).autocomplete({ 
minChars: 1,
source: function( request, response ) {
        var matcher = new RegExp( "^" + $.ui.autocomplete.escapeRegex( request.term ), "i" );
        response( $.grep( tags, function( item ){
            return matcher.test( item );
        }) );
    }
});

オートコンプリートの使用方法とそのオプションの詳細については、こちらをご覧ください。

アップデート

テキスト ファイルから配列を作成するメソッドを記述できます。

function get_suggestions(){
    $.get("/path/to/jsontxtfile.txt", { }, function(data){
        var data_array = eval(data);
        data_array = data;
    });
}

そして、それを次のように使用します。

$(document).ready(function(){
    var autocomplete_opts = get_suggestions();
    $( "#id_name" ).autocomplete({ minChars: 1, source: autocmplete_opts});
});
于 2012-12-25T15:41:01.290 に答える