我使用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数组做同样的事情。可能吗。有人可以帮我这个。
答案 0 :(得分:0)
如果页面上已有json数组,那么您只需将其作为源
包含即可source: projectsForAutoComplete
但是,autocomplete要求它的源是1D数组,而你的数组是2D。您需要创建两个数组,提供一个字符串作为源,并编写一个函数将名称映射到id,或者执行类似于jQueryUI自动完成文档中的组合框示例。