0

jquery UI オートコンプリートを使用して、プロジェクト名の候補をリストに表示しています。次のように、php ファイルからプロジェクト名リストを json 配列として提供しています。

function getProjectList($projectList) {
    foreach ($projectList as $project) {
        $jsonArray[] = array('name' => $project['projectName'], 'id' => $project['projectId']);
    }

    $jsonString = json_encode($jsonArray);
    return $jsonString;
 } 

そして、プロジェクト名リスト全体をjavascript変数に取得しています。

var projectsForAutoComplete=<?php echo $timesheetForm->getProjectListAsJson(); ?>;

このプロジェクト リストには 10000 以上のプロジェクトがあり、自動提案を提供する 20 個のプロジェクト名テキスト ボックスがあります。したがって、ロード時に次のようにしようとすると、jsの処理が速くなるため、ページがロードされるまでに30秒かかります。

$(".project").autocomplete(projectsForAutoComplete, {

    formatItem: function(item) {
    var temp = $("<div/>").html(item.name).text();
        return temp.replace("##", "");
    }
    ,
    matchContains:true
})

したがって、Jquery ドキュメントのデモのように、キー プレス イベントで自動提案を読み込む必要があります。http://jqueryui.com/demos/autocomplete/#remote-jsonp

ただし、この例では、リモート json ソースを使用してそれを行う方法を示しています。ローカルのjson配列でも同じことができますか? 出来ますか。誰かがこれについて私を助けることができますか?

4

1 に答える 1

0

ページにすでにjson配列がある場合は、それをソースとして含めることができます

source: projectsForAutoComplete

ただし、オートコンプリートでは、ソースが1D配列であり、配列が2Dであることが想定されています。2つの配列を作成し、1つにソースとして文字列を提供し、名前をIDにマップする関数を作成するか、jQueryUIオートコンプリートドキュメントのコンボボックスの例と同様のことを行う必要があります。

于 2012-06-14T17:12:42.563 に答える