我正在努力使这个插件适用于我的场景。 我的数据采用以下格式:
[“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])?
哦,还有一件事:在第二个焦点()上,有没有办法清理文本框中的第一个选择?
提前感谢。
答案 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跟踪正在挑选的供应商。感谢