Jquery Ui使用Json数组的自动建议

时间:2012-06-14 16:42:48

标签: php javascript jquery-ui-autocomplete

我使用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数组做同样的事情。可能吗。有人可以帮我这个。

1 个答案:

答案 0 :(得分:0)

如果页面上已有json数组,那么您只需将其作为源

包含即可
source: projectsForAutoComplete

但是,autocomplete要求它的源是1D数组,而你的数组是2D。您需要创建两个数组,提供一个字符串作为源,并编写一个函数将名称映射到id,或者执行类似于jQueryUI自动完成文档中的组合框示例。