到目前为止,我一直在使用 jquery 自动完成功能,没有任何问题。我想创建一个标签系统(比如 stackoverflow 中的那个)。
为此,我使用了两个插件:
我让它运行并使用以下代码工作:
$('#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 </span><a href="#" title="Removing tag">x</a></span><span class="tag"><span>bar </span><a href="#" title="Removing tag">x</a></span><span class="tag"><span>baz </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/