i am displaying data in an autocomplete , my input box dont get the value first time only second times so for example when typing A, it dont dislay but second time i type A it displays the value but i want to to display the value on keypress the first time and not second, i am using a sharepoint hosted app, and without document.ready it wont work at also, so how could i do to preventing to need to type 2 times to display value?
var hostweburl;
var appweburl;
$(document).ready(function () {
$("#subSiteTitle").keypress(function () {
hostweburl = decodeURIComponent(getQueryStringParameter("SPHostUrl"));
appweburl = decodeURIComponent(getQueryStringParameter("SPAppWebUrl"));
var scriptbase = hostweburl + "/_layouts/15/";
$.getScript(scriptbase + "SP.RequestExecutor.js", execCrossDomainRequest);
function execCrossDomainRequest() {
var executor = new SP.RequestExecutor(appweburl);
var queryUrl = appweburl + "/_api/SP.AppContextSite(@target)/web/webs?$select=Title,Url,WebTemplate&$filter=WebTemplate ne 'APP'&@target='" + hostweburl + "'";
executor.executeAsync(
{
url: queryUrl,
method: "GET",
headers: { "Accept": "application/json; odata=verbose" },
success: successHandler,
error: errorHandler
}
);
}
function successHandler(data) {
$("#subSiteTitle").keypress(function () {
var jsonObject = JSON.parse(data.body);
var dataArr = $.makeArray(jsonObject.d.results);
var resultArr = $.map(dataArr, function (item) {
return { label: item.Title, value: item.Url };
});
$('#subSiteTitle').autocomplete({
source: resultArr,
select: function (event, ui) {
window.location.href = ui.item.value;
}
});
}
)
}
function errorHandler(data, errorCode, errorMessage) {
document.getElementById("Error").innerText =
"Could not complete cross-domain call: " + errorMessage;
}
function getQueryStringParameter(paramToRetrieve) {
var params =
document.URL.split("?")[1].split("&");
var strParams = "";
for (var i = 0; i < params.length; i = i + 1) {
var singleParam = params[i].split("=");
if (singleParam[0] == paramToRetrieve)
return singleParam[1];
}
}
})
});
Aucun commentaire:
Enregistrer un commentaire