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

但是,自动完成希望它的源是一维数组,而您的数组是二维的。您需要创建两个数组,将字符串作为源提供一个数组,然后编写一个函数将名称映射到 id,或者执行类似于 jQueryUI 自动完成文档中的组合框示例的操作。

于 2012-06-14T17:12:42.563 回答