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配列でも同じことができますか? 出来ますか。誰かがこれについて私を助けることができますか?