2

我目前正在努力为我的网站实现一个带有自动完成功能的标签(带有自定义数据对象)的 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>
4

1 回答 1

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;
    }    
}
于 2015-04-29T11:16:35.237 回答