我正在尝试在Jquery中使用SharePoint 2013中的自动完成选项。
我尝试过以下代码
var autocomplete = $("input[title='Skill Required Field']").autocomplete({
minLength: 3,
source: function( request, response ) {
$.ajax({
beforeSend: function (request)
{
request.setRequestHeader("Accept", "application/json;odata=verbose;charset=utf-8");
},
url: site url,
dataType: "json",
success: function( data ) {
$.each(data.d.results , function ( i, result ) {
if(result.Title){
titles.push(result.Title)
}
});
response(titles);
},
error: function( data ) {
alert('search error');
}
});
},
// Run this when the item is in focused (not selected)
focus: function( event, ui ) {
return false;
},
// Run this when the item is selected
select: function( event, ui ) {
location.href = ui.item.fields.Path;
},
appendTo: $('#menu-container')
}).data( "uiAutocomplete" )._renderItem = function( ul, item ) {
return $("<li>").append('<div>' + item.label + '</div>' ).appendTo( ul );
};
function getFields(results) {
r = {};
for(var i = 0; i< results.length; i++) {
if(results[i] != undefined && results[i].Key != undefined) {
r[results[i].Key] = results[i].Value;
}
}
return r;
}
我正在自定义新的form.aspx。我添加了一个JSLink,其中技能的数据定义如下:
"<div id='menu-container' class = 'col-xs-3'>{{SkillCtrl}}</div>",
formTable = formTable.replace("{{SkillCtrl}}", getSPFieldRender(ctx, "MySkill"));
该列创建为单行文本。我使用的是jquery-ui-1.12.1,jquery-1.11.3.min。 目前我没有收到任何错误,但结果没有显示在菜单容器框中。使用F12时,我可以在&#34; result.Title&#34;中看到数据。但是,UI中没有显示数据。我错过了什么?如何解决这个问题?谢谢
答案 0 :(得分:0)
我会尝试以下success
代码:
success: function(data) {
var titles = [];
$.each(data.d.results, function(i, result) {
if (result.Title) {
titles.push(result.Title);
}
});
response(titles);
}
此外,当您使用renderItems时,必须正确地包装它们:<li><div></div></li>
。我建议:
return $("<li>").append('<div><img style="margin-right:3px;top:3px;" src="/_layouts/15/images/' + img + '">' + item.label + '</div>').appendTo(ul);