Javascript 如何将HTML推送到数组中? 我有一个数组,当前正在浏览一个项目的标题 然后将此数组用作jQueryUI自动完成的源 当在HTML输入中键入内容时,autocomplete会从数组中查找标题列表 我想告诉我们在单击搜索时要附加到URL的项目的ID(它当前配置为推送标题,因为这是数组中的内容)
将ID放入数组时,标题和ID自然都会显示在“自动完成”下拉列表中。但是,我不希望显示ID,我只想根据标题提取ID,以便将其附加到url 我目前遇到的困难是,如果我尝试创建一个HTML结构作为变量来推入数组,则在键入时HTML将显示在HTML输入框中 例如:Javascript 如何将HTML推送到数组中? 我有一个数组,当前正在浏览一个项目的标题 然后将此数组用作jQueryUI自动完成的源 当在HTML输入中键入内容时,autocomplete会从数组中查找标题列表 我想告诉我们在单击搜索时要附加到URL的项目的ID(它当前配置为推送标题,因为这是数组中的内容),javascript,jquery,html,arrays,jquery-ui,Javascript,Jquery,Html,Arrays,Jquery Ui,将ID放入数组时,标题和ID自然都会显示在“自动完成”下拉列表中。但是,我不希望显示ID,我只想根据标题提取ID,以便将其附加到url 我目前遇到的困难是,如果我尝试创建一个HTML结构作为变量来推入数组,则在键入时HTML将显示在HTML输入框中 例如: var prodResultTite = $(this).attr('ows_Title'); var prodResultID = $(this).attr('ows_ID');
var prodResultTite = $(this).attr('ows_Title');
var prodResultID = $(this).attr('ows_ID');
var prodResultContainer = '<div class="result" id="' + prodID + '">' + prodTitle + '</div>';
//itemTitle.push($(this).attr('ows_Title'));
itemTitle.push(prodResultContainer);
var prodresultite=$(this.attr('ows_Title');
var prodResultID=$(this.attr('ows_ID');
var prodResultContainer=''+prodTitle+'';
//itemTitle.push($(this.attr('ows_Title'));
itemTitle.push(prodResultContainer);
这将导致输入字段显示:
'<div class="result" id="' + 125+ '">' + My Product Title + '</div>';
“”+我的产品名称+“”;
正如您所看到的,ID和标题被完美地拉过,但是HTML也被拉过
在这个实例中,HTML是否真的是div而不是字符串
任何帮助都将不胜感激:)使用此代码,但只需注意一点 在自动完成中,您应该有一个
“seeVal”按钮和CSS用于测试输出非常感谢快速响应。我刚刚尝试了这种方法,但不幸的是数组(自动完成下拉列表)没有填充,并且找不到标题值。(我以前随机尝试过类似的方法)对不起,我的互联网连接失败了。我不明白你的意思?据我所知,您可以使用JSON数据源进行自动完成。还有一个php文件,它接受输入(文本值)并生成JSON。请再解释一下你的意思?(我的英语不太好。)没问题,谢谢你的帮助:)。以前,由“Title”变量构建的数组工作得非常好。但是,我正在尝试将一个ID和Title在里面的div容器推送到数组中。执行此操作时(您的示例),jqueryui的autocomplete下拉列表不会显示任何可供选择的值。我希望这会有帮助。哦,你正在尝试创建一个自定义下拉列表,显示一个div而不是一个简单的文本,对吗?哦,很抱歉迟到了,我很忙,而且我的互联网连接太慢了。检查这个,它应该是你要找的。如果是,请告诉我。
<input id="search" type="text"/>
<div id="itemcontainer" style="display:none">
<div class="item" id="id_1" title="Item 1">Item1</div>
<div class="item" id="id_2" title="Item 2">Item2</div>
<div class="item" id="id_3" title="Item 3">Item3</div>
<div class="item" id="id_4" title="Item 4">Item4</div>
</div>
<input type="button" id="seeVal" value=" see autocompele html" />
.result , .result *{
color:#f00 !important;
}
.result#id_2 ,.result#id_2 *{
color:#00f !important;
}
$(document).ready(function(){
/*var items = [
{
id:1,label:'lbl1'
},
{
id:2,label:'lbl2'
},
{
id:4,label:'the label3'
},
{
id:5,label:'the label4'
},
];*/
var items=[];
$('#itemcontainer').find('.item').each(function(){
items[items.length]={'id':$(this).attr('id'),'label':$(this).html()}
});
$('#search').autocomplete({
minLength: 0,
source:items,
focus: function( event, ui ) {
$('#search').val( ui.item.label );
return false;
},
select: function( event, ui ) {
$('#search').val( ui.item.label );
return false;
}
}).data( "ui-autocomplete" )._renderItem = (function( ul, item ) {
var $div=$('<div></div>').addClass('result').attr('id',item.id).html('<a>'+item.label+'</a>');
return $( "<li>" )
.append($div)
.appendTo(ul);
});
$('#seeVal').on('click',function(){
alert($('.result').parent().parent().html());
});
});