使用自动完成功能返回多个值

时间:2011-12-01 11:04:23

标签: jquery autocomplete

我已经搜索了相关的问题,但是大多数都与jquery ui有关,我没有使用,其余的与我的问题无关。

我正在使用this autocomplete plugin [不是UI一个]并且通过SQL返回多个值。我想只显示一个值作为自动完成功能,但我想在用户点击建议时使用其他两个值 - 它应该重定向到另一个具有其他值的页面。

例如:我已返回数据:ABC 001 55。 ABC应该在列表中显示为建议值,但是当用户点击ABC时,它应该使用其他两个值重定向页面:page/001/55/

这是我到目前为止的代码,虽然建议正确[data[0]]但我尝试使用data[1]data[2]来传递其他两个数据,但这会引发未定义的错误:

PHP:

  foreach ($items as $item) {

            $value = $item['ABC'];
            $noID = $item['NoID'];
            $cID = $item['cID'];

            echo  $value . "\n";

        }

JQUERY:

  $('#f').autocomplete('redirect.php', {
        width: 500,
        max: 15,
        highlight: function(match, keywords) {
        keywords = keywords.split(' ').join('|');
        return match.replace(new RegExp("("+keywords+")", "gi"),'<b>$1</b>');
         },
        formatItem: function(data) {
            return data[0];
        }
        }).result(function(event, data) { 
            if (data) {
                //var noID = data[1];
                //var cID = data[2];
                //location.href = "anotherpage.php?s=" +noID+ "/" +cID;
                alert(data[0] + data[1] + data[2]); // <- data 1 and 2 are shown as undefined.
            }
     });  

1 个答案:

答案 0 :(得分:1)

您似乎没有“回应”PHP脚本中的所有必要值。

查看插件的源代码,解析方法需要这样:

Data1|Data2|Data3\n
Data1|Data2|Data3\n
Data1|Data2|Data3\n

我不熟悉php,但你的脚本应输出如下内容:

echo "$value|$noID|$cID\n";

有关信息,这是插件中的解析方法:

function parse(data) {
    var parsed = [];
    var rows = data.split("\n");
    for (var i=0; i < rows.length; i++) {
        var row = $.trim(rows[i]);
        if (row) {
            row = row.split("|");
            parsed[parsed.length] = {
                data: row,
                value: row[0],
                result: options.formatResult && options.formatResult(row, row[0]) || row[0]
            };
        }
    }
    return parsed;
};