我是javascript的新手,无法让这个小东西起作用。 (当然所有外部脚本都加载了)
我有这个jQuery脚本:
$('a.Link').click(function(){
autoComp('City');
});
function autoComp(strFormName) {
var Company = 'Adobe Apple Microsoft'.split(" ");
var City = 'London Paris Berlin'.split(" ");
$('#'+strFormName).autocomplete(strFormName)
}
我无法让它发挥作用。我发现问题是.autocomplete之后的最后一个“strFormName”
感谢我能得到的所有帮助。
答案 0 :(得分:4)
您将strFormName
的实际值传递给自动完成器。您可能想要这样做:
function autoComp(strFormName) {
var data = {
Company: 'Adobe Apple Microsoft'.split(" "),
City: 'London Paris Berlin'.split(" ")
};
$('#'+strFormName).autocomplete(data[strFormName]);
}
这样做会创建一个包含两个属性data
和City
的对象(Company
)。然后,在将数组传递给自动完成器时,它会通过使用[]
语法按名称查找属性来选择适当的数组。
JavaScript对于如何访问属性非常灵活。例如,所有这些都检索City
的{{1}}属性:
data
您明白了,您可以通过在代码中使用其名称来访问属性,或者通过使用var x = data.City;
var x = data['City'];
var y = "City"; var x = data[y];
var x = data["C" + 'i' + "t" + 'y'];
索引到对象并将属性作为字符串(可以是字符串文字,或来自变量,表达式或函数结果的字符串,或......)。
我可能会将[]
内容移出data
,因为您不需要每次都重新创建它。
答案 1 :(得分:3)
您需要稍微更改一下,如下所示:
function autoComp(strFormName) {
var Company = 'Adobe Apple Microsoft'.split(" ");
var City = 'London Paris Berlin'.split(" ");
$('#'+strFormName).autocomplete(strFormName == 'City' ? City : Company);
}
你传入的字符串和变量是不同的东西,你需要根据你传入的字符串选择你想要的变量。这里有一个替代方法可以做得更清洁:
function autoComp(strFormName) {
var lists = {
Company: 'Adobe Apple Microsoft'.split(" "),
City: 'London Paris Berlin'.split(" ")
};
$('#'+strFormName).autocomplete(lists[strFormName]);
}
这会在javascript中创建一个对象,您可以通过object.property
或object['property']
访问它,您的输入字符串非常适合:)
答案 2 :(得分:0)
我想我能看出你的问题。您传递给自动填充的参数是一个字符串“City”...而不是您认为正在传递的数组。
您可以eval
字符串来获取变量。
$('#'+strFormName).autocomplete(eval(strFormName)) ;
答案 3 :(得分:0)
您确定.autocomplete()
需要调用strFormName
吗?是不是应该在strInputName
上调用?
$('#idofsometextbox').autocomplete()