I have this code below for autocomplete feature of several inputTextbox. The input box also share same class ".wikiInput". When user typed something in either of them, a relevant autocomplete dropdown box should show up. Instead of hard code one by one. How do I group them in one using array or array group? Note the lookup has different arrays in different pages. Not every page showing all of the needed arrays.
(function () {
var cdTeamInput = $("#ctl00_ContentPlaceHolder1_txtAssociation");
if (cdTeamInput.length > 0) {
cdTeamInput.autocomplete({
deferRequestBy: 0,
autoSelectFirst: true,
lookup: txtAssociation,
onSelect: function (value, data) {
cdTeamInput.val(value.value);
$(".wikiSubmit").click();
}
});
}
})();
(function () {
var cdSubjectInput = $("#ctl00_ContentPlaceHolder1_txtSubject");
if (cdSubjectInput.length > 0) {
cdSubjectInput.autocomplete({
deferRequestBy: 0,
autoSelectFirst: true,
lookup: txtSubject,
onSelect: function (value, data) {
cdSubjectInput.val(value.value);
$(".wikiSubmit").click();
}
});
}
})();
so far what I got but still not working for cross-page array objects. Console keep saying I got undefined variables because not every page have all those arrays available. How to ignore the function if it doesn't exist in page? lookup.length>0 don't work for me.
function initAutocomplete(selector, lookup) {
$(selector).autocomplete({
deferRequestBy: 0,
autoSelectFirst: true,
lookup: lookup,
onSelect: function (value, data) {
cdSubjectInput.val(value.value);
$(".wikiSubmit").click();
}
});
}
initAutocomplete("#ctl00_ContentPlaceHolder1_txtAssociation", txtAssociation);
initAutocomplete("#ctl00_ContentPlaceHolder1_txtSubject", txtSubject);