2010-05-19 176 views
2

即时通讯使用JQuerys自动填充插件,但输入任何内容后都不会自动完成。JQuery自动填充问题

任何想法,为什么它不工作?基本的例子起作用,但不是我的。

var ppl = {"ppl":[{"name":"peterpeter", "work":"student"}, 
    {"name":"piotr","work":"student"}]}; 

var options = { 
    matchContains: true, // So we can search inside string too 
    minChars: 2,  // this sets autocomplete to begin from X characters 
    dataType: 'json', 
    parse: function(data) { 
     var parsed = []; 
     data = data.ppl; 
     for (var i = 0; i < data.length; i++) { 
      parsed[parsed.length] = { 
       data: data[i], // the entire JSON entry 
       value: data[i].name, // the default display value 
       result: data[i].name // to populate the input element 
      }; 
     } 
     return parsed; 
    }, 
    // To format the data returned by the autocompleter for display 
    formatItem: function(item) { 
     return item.name; 
    } 
}; 

$('#inputplace').autocomplete(ppl, options); 

好的。更新:

<input type="text" id="inputplace" /> 

因此,在输入字段中输入例如“彼得”的时候。没有自动填充建议出现。它应该给“peterpeter”,但没有任何反应。

还有一件事。使用这个例子完美地工作。

var data = "Core Selectors Attributes Traversing Manipulation CSS Events Effects Ajax Utilities".split(" "); 
$("#inputplace").autocomplete(data); 
+2

'var ppljson = eval(ppl);'为什么? 'ppl'已经是一个有效的JS对象。如果'ppl'是一个字符串(''{...}'')并且_needed_是'eval()',那么它就会有意义。 – jensgram 2010-05-19 11:18:34

+0

是的,没错。删除eval,但它仍然无法正常工作。任何想法? :) – heffaklump 2010-05-19 11:34:23

+0

那么**完全**做“它不工作”是什么意思?错误?浏览器崩溃?文字向后退出?你在这里没有帮助我们。 – Pointy 2010-05-19 11:36:30

回答

3

那么,看看该插件中的代码,“解析”选项看起来像只有当数据被AJAX调用检索时才调用。作为一个实验,你可能会尝试传递数据,以至于你不需要它:

var ppl = [{"name":"peterpeter", "work":"student"}, 
{"name":"piotr","work":"student"}]; 
+0

Ooooh,那就是为什么。是的,用您的ppl版本进行尝试,并拿走了解析功能,现在它可以工作! :DD是的!非常感谢! – heffaklump 2010-05-19 14:05:10

+0

好吧,那太好了!当然,如果你最终*使用Ajax回调,你可以恢复你的“解析”处理程序。 (当你没有做Ajax的时候,我认为它不会让任何东西成为其中的一部分,如果这样做有助于测试。) – Pointy 2010-05-19 14:35:31