I'm new to javascript and cant get this little thing to work. (all external scripts a of course loaded)
I have this jQuery script:
$('a.Link').click(function(){
autoComp('City');
});
function autoComp(strFormName) {
var Company = 'Adobe Apple Microsoft'.split(" ");
var City = 'London Paris Berlin'.split(" ");
$('#'+strFormName).autocomplete(strFormName)
}
I cant get it to work. I've discovered that the problem is the last "strFormName" after .autocomplete
Appreciate all the help I can get.
You're passing the actual value of strFormName
into the autocompleter. You probably wanted to do this instead:
function autoComp(strFormName) {
var data = {
Company: 'Adobe Apple Microsoft'.split(" "),
City: 'London Paris Berlin'.split(" ")
};
$('#'+strFormName).autocomplete(data[strFormName]);
}
What that does is create an object (data
) with two properties, City
and Company
. Then, when passing the array to the autocompleter, it selects the appropriate array by looking up the property by name, using []
syntax.
JavaScript is very flexible about how you access properties. For example, all of these retrieve the City
property of data
:
var x = data.City;
var x = data['City'];
var y = "City"; var x = data[y];
var x = data["C" + 'i' + "t" + 'y'];
You get the idea, you can either access a property by using its name literally in the code, or by indexing into the object with []
and giving the property as a string (which can be a string literal, or a string coming from a variable, or expression, or function result, or...).
I'd probably move the data
stuff out of autoComp
because you don't need to recreate it every time.