jquery-ui - Jquery UI 自动完成和标签插件 (XOXCO) 合并问题

标签 jquery-ui plugins jquery-plugins tags jquery-autocomplete

到目前为止,我一直在使用 jquery 自动完成功能,没有任何问题。我想创建一个标签系统(比如 stackoverflow 中的那个)。

为此,我使用了两个插件:

  • jQuery UI (http://jqueryui.com/demos/autocomplete/)
  • Xoxco (http://xoxco.com/projects/code/tagsinput/)

  • 我让它运行并使用以下代码工作:
    $('#related_tags').tagsInput({
        autocomplete_url : 'live_search.php',
        autocomplete : {
                minLength: 3,
                delay: 150,
                //DATA AS OPTION??
        },
       'height':'30px',
       'width':'auto',
       'removeWithBackspace' : true,
       'minChars' : 3,
       'maxChars' : 200,
       'placeholderColor' : '#666666'
    });
    

    但是,我需要更改 livesearch 显示找到的数据的方式(以便它不仅显示标签)。如果您没有同时使用这两个插件(假设您只使用自动完成功能),这很容易,您只需执行以下操作:
    $( "#related_tags" ).autocomplete({
            source: 'live_search.php',
            minLength: 3,
            delay: 150
    })
    .data( "autocomplete" )._renderItem = function( ul, item ) {
            return $( "<li></li>" )
                .data( "item.autocomplete", item )
                .append( "<a href='item.php'>" + item.label + " " + item.surname + "<span style='color:#003399;'>" + item.p_name + "</span></a>" )
                .appendTo(ul);
    };
    

    如您所见,我不仅显示项目的标签,还显示姓氏和 p_name。

    所以我的问题是:

    将自动完成和标签插件合并在一起时如何使用数据渲染功能?

    由于我认为数据不能作为自动完成选项提供,因此我不能将其推高。有任何想法吗?

    P.S:如果你知道如何使用与 xoxco 不同的插件来做到这一点,请告诉我。谢谢!

    最佳答案

    该插件使用某种隐藏输入,插件将 jquery 自动完成附加到该输入。

    所以你只需要覆盖 _renderItem到该输入输入字段,就像您对简单的自动完成输入所做的那样。

    DEMO

    因此,如果您将 tagsInput 插件应用于以下输入(来自网站插件上的示例):

    <input name="tags" id="tags" value="foo,bar,baz" />​
    
    $('#tags').tagsInput({
        autocomplete_url: 'some url'
    });
    

    您最终会得到以下生成的标记:
    <input name="tags" id="tags" value="foo,bar,baz" style="display: none; ">
    <div id="tags_tagsinput" class="tagsinput" style="width: 300px; height: 100px; ">
        <span class="tag"><span>foo&nbsp;&nbsp;</span><a href="#" title="Removing tag">x</a></span><span class="tag"><span>bar&nbsp;&nbsp;</span><a href="#" title="Removing tag">x</a></span><span class="tag"><span>baz&nbsp;&nbsp;</span><a href="#" title="Removing tag">x</a></span><div id="tags_addTag">
    
        <input id="tags_tag" value="" data-default="add a tag" style="color: rgb(102, 102, 102); width: 80px; " class="ui-autocomplete-input" autocomplete="off" role="textbox" aria-autocomplete="list" aria-haspopup="true"></div>
    
        <div class="tags_clear"></div>
    </div>
    

    见输入栏 tags_tag .这是自动完成插件附加到的元素。然后您可以简单地覆盖 _renderItem :
    $('#tags_tag')
        .data('autocomplete')
        ._renderItem = function(ul, item) {
            return $("<li></li>")
                .data("item.autocomplete", item)
                .append("<a href='item.php'>" + item.someProperty + "</a>")
                .appendTo(ul);
    };​
    

    关于jquery-ui - Jquery UI 自动完成和标签插件 (XOXCO) 合并问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9617041/

    相关文章:

    java - 以编程方式更改 Eclipse 中的文件关联

    r - 设置 Visual Studio 代码以使用 R - "win32 can' t use R"

    javascript - 一个接一个的jQuery BlockUi Message

    javascript - jQuery:自动执行插件?

    javascript - 将变量传递给回调函数

    html - Eonasdan Bootstrap 日期时间选择器格式

    jquery - 如何使用 Jquery UI 为网站设置主题?有教程和演示吗?

    css - float div 水平堆叠以填充父 div 并响应调整大小

    javascript - 如何制作类似Github的面包屑和shifting view效果

    jquery - 使用 jquery 选中/取消选中复选框?