bootstrap标签和id显示错误

时间:2013-12-30 14:18:14

标签: bootstrap-typeahead

我有一个jason复杂对象,包含名字,姓氏,middkle名称,FH名称和代理ID。我是uisng bootstrap-typehead,用于进行ajax调用以获取结果。用户可以输入名字,姓氏或代理ID。我想把所有上面的字段显示为lables,将代理ID显示为id。我正在解决未定义的错误。

DEMO

 $('#selectAgent').typeahead({
source: function (query, process) {
    objects = [];
    map = {};
    var data = [{"AgentID": 3456,"FName": "Gary", "LName": "Means","MName": "K","FHName": "GaryFH Name"}, {"AgentID": 2050,"FName": "Kevin", "LName": "Mortha","MName": "V","FHName": "Keving FH Name"},{"AgentID": 5678,"FName": "Mike", "LName": "Hundt","MName": "","FHName": "Mike FH Name"}] // Or get your JSON dynamically and load it into this variable

    $.each(data, function (i, object) {
        map[object.label] = object;
        objects.push(object.Fname + object.LName );
    });
    console.log(objects);
    process(objects);
},
updater: function (item) {
    $('id').val(map[item].AgentID);
    return item;
}
});

//控制台日志

日志:undefinedMeans,undefinedMortha,undefinedHundt

1 个答案:

答案 0 :(得分:0)

我已经解决了你的问题,它的区分大小写。您会看到您恰好引用了Fname而不是FName。在实践中,最好处理这样的任何不规则大写,只是使维护代码更容易。在对agentId和名称进行过滤方面,这有点困难,但我认为你会发现这里的解决方案合适。

我会传递整个用户记录,但是如果这是正常的字母数字项,则需要您定义排序和已经存在的所有排序。如果我这样做,我会尝试通过传递原型来使其工作。

JSFiddle

考虑将排序调用传递回typeahead库,但开销不值得。希望以上就足够了!