jQuery TextExt:带有自定义数据对象的标签

时间:2015-04-28 00:19:42

标签: javascript jquery json jquery-textext

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

1 个答案:

答案 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;
    }    
}