我目前正在努力为我的网站实现一个带有自动完成功能的标签(带有自定义数据对象)的jQuery插件。可以在此处找到jQuery TextExt(http://textextjs.com/)。我目前正在努力为每个标签使用自定义数据对象,只能从自动复合中选择。基于这个例子(http://textextjs.com/manual/examples/tags-with-custom-data-objects.html)我试图弄清楚如何在选择标签时返回“name”和“id”。有谁知道如何实现这一点或指出我正确的方向?
也许答案在这个例子中的某个地方(http://textextjs.com/manual/examples/filter-with-suggestions.html)?
这是我写的,不起作用(它只返回名称,我尝试将'item.id'添加到函数中,但这对我来说也不起作用):
<script type="text/javascript">
jQuery(document).ready(function( $ ){
jQuery('#textarea').textext({
plugins: 'tags',
items: [
{ name: 'PHP', id: '1' },
{ name: 'Closure', id: '2' },
{ name: 'Java', id: '3' }
],
ext: {
itemManager: {
stringToItem: function(str)
{
return { name: str };
},
itemToString: function(item)
{
return item.name ;
},
compareItems: function(item1, item2)
{
return item1.name == item2.name;
}
}
}
});
})
</script>
答案 0 :(得分:2)
您的itemManager代码应该如下所示,您需要将建议存储在自定义数组中,以便在stringToItem方法中查找相关ID
itemManager: {
items: [], // A custom array that will be used to lookup id
stringToItem: function(str)
{
//Lookup id for the given str from our custom array
for (var i=0;i<this.items.length;i++)
if (this.items[i].name == str) {
id = this.items[i].id;
break;
}
return { name: str, id: id };
},
itemToString: function(item)
{
//Push items to our custom object
this.items.push(item);
return item.name ;
},
compareItems: function(item1, item2)
{
return item1.name == item2.name;
}
}