将Div数据属性指定为数据源到JQuery AutoComplete

时间:2013-01-15 08:58:48

标签: c# jquery asp.net

我使用 JS 方法将计算机语言的名称分配给div的数据属性 e.g

<div id="Languages" data-Languages=''></div>

js代码

var langs='["Perl", "PHP", "Python", "Ruby", "Scala", "C#"]';
$('#Languages').data('Languages', langs);

但是当我在文本框中键入文本时,它会给我一个错误 对象预期 我正在使用此行进行自动填充

$(function () { 
    $("#tags").autocomplete({ source: $('#Languages').data('Languages') }); 
}); 

当我创建另一个变量并将其作为jquery website

中实现的源传递时,它完全正常

我想用div的数据属性处理它,因为将来我想使用JSON在页面加载时获取自动完成数据并将其分配给div数据属性。

对不起,如果这个问题听起来很愚蠢,那就是我jquery的第二天以及所有这些。

4 个答案:

答案 0 :(得分:4)

不确定这是不是你的问题,但你的数组周围有单引号,使它成为一个字符串。

它应该是:

var langs = ["Perl", "PHP", "Python", "Ruby", "Scala", "C#"];

答案 1 :(得分:4)

你的langs就像'',它使它成为一个字符串。你需要一个行为像自动完成源的数组。您正在尝试的数据的ID和密钥也不匹配。试试这个

var langs = ["Perl", "PHP", "Python", "Ruby", "Scala", "C#"];
$('#locations').data('languages', langs);
$(function () { $("#tags").autocomplete({ 
  source: $('#locations').data('languages') }); 
}); 

答案 2 :(得分:1)

问题是,当div实际上没有加载到页面上时,您正在将数据分配给div外部页面就绪功能。尝试下面提到代码,它对我来说很好。

$(function () { 
    var langs = ["Perl", "PHP", "Python", "Ruby", "Scala", "C#"];
    $('#locations').data('languages', langs);
    $("#tags").autocomplete({ 
       source: $('#locations').data('languages') }); 
});

答案 3 :(得分:1)

这与@Rahul解决方案没什么不同。

但也许你想直接从数据属性中读取:

var langs = ["Perl", "PHP", "Python", "Ruby", "Scala", "C#"];

$('#locations').attr('data-Languages', langs);

$(function () { $("#tags").autocomplete({ 
    source: $('#locations').data('languages').split(',')}); 
}); 

工作示例:http://jsbin.com/oyusub/4/