jquery自动完成问题

时间:2009-10-14 14:53:28

标签: jquery autocomplete

我正在努力使这个插件适用于我的场景。 我的数据采用以下格式:

[“50986.1 ST SAVINGS BANK”,  “70625.1-800 GOT JUNK COMMERCIAL SERVICES(USA)LLC”,  “42755.103RD ST SAND LLC”]

第一部分是公司的ID,我需要在选择数据后保存该值。

我的代码:

 <script type="text/javascript">
 $().ready(function() {
$("#suggest1").focus(function(){
          $("#suggest1").autocomplete(cities,
              {
       formatResult: function(data) {
        return data.split(".")[1];
       }
});
 });

});
</script>

<form autocomplete="off">
    <p>
        <label>Single City (local):</label>
        <input type="text" id="suggest1" />
        <input type="hidden" id="suggest1ID"/>
        <input type="button" value="Get Value" />
    </p>
</form>

Firebug告诉我“data.split”不是一个函数。如何将结果格式化为: a)获取#suggest1的文本 b)获取id并将其保存在suggest1ID中。喜欢:$(“#suggest1ID”)。val(data.split(“。”)[0])?

哦,还有一件事:在第二个焦点()上,有没有办法清理文本框中的第一个选择?

提前感谢。

4 个答案:

答案 0 :(得分:0)

您的数据已经在数组中,而不是从服务器提供。所以你不必做分裂的事情。

答案 1 :(得分:0)

我不熟悉自动完成功能但是如果你想要一个只有显示名称的数组,你可以使用它。希望它有所帮助。

formatResult: function(data) {
    var i,
        l = data.length,
        displayNames;

    for (i = 0, i < l; (i += 1) {
        displayNames.push(data[i].split('.')[1]);
    };

    return displayNames;
}

如果不起作用,请检查数据是否实际,而数组不是字符串。

..弗雷德里克

答案 2 :(得分:0)

基于Fredrik的示例,我认为这适用于自动完成

function t(data) {
    var i;
    var l = data.length;
    var displayNames=[];

    for (i = 0; i < l; i++) {
        displayNames.push(data[i].split('.')[1]);
    };

    return displayNames.join(" ");
}

你看,使用data.split(),你试图在“数组”上应用“字符串”函数, 你必须找到数组中的每个元素并单独拆分它们,然后将它们连接起来并将它们返回给函数

希望清除它......

答案 3 :(得分:0)

我最后指的是这个页面: http://docs.jquery.com/Plugins/Autocomplete

以这种格式创建了一个数据变量: [{text:'1 ST SAVINGS BANK',id:'50986'},{text:'1-800 GOT JUNK COMMERCIAL SERVICES(USA)LLC',id:'70625'}];

并使用:

  $("#sVendor").focus(function(){
 $("#sVendor").autocomplete(vendors, {formatItem: function(item) {
              return item.text; 
           }
        }).result(function(event,item) {
          //alert(item.id);
          $("#sVendorID").val(item.id);
       });
});

我必须通过vendorID跟踪正在挑选的供应商。感谢