2012-01-25 51 views
0

我正在使用以下代码来动态创建一个INPUT元素并为其分配自动完成功能。 .autocomplete行有一些问题,因为将元素添加到td的下一行永远不会执行。jQuery UI自动完成不显示建议

var availableTags = [ 
      "ActionScript", 
      "AppleScript", 
      "Asp", 
      "BASIC", 
      "C", 
      "C++", 
      "Clojure", 
      "COBOL", 
      "ColdFusion", 
      "Erlang", 
      "Fortran", 
      "Groovy", 
      "Haskell", 
      "Java", 
      "JavaScript", 
      "Lisp", 
      "Perl", 
      "PHP", 
      "Python", 
      "Ruby", 
      "Scala", 
      "Scheme" 
     ]; 

var fileCodeAutoComplete = $("<input/>"); 

$(fileCodeAutoComplete).autocomplete({ 
    source: availableTags 
}); 

$(td).append(fileCodeAutoComplete); 

任何想法?

更新1:

我放在一个try-catch周围的自动完成呼叫,并发现该错误是:

“对象不支持此属性或方法”。

这很奇怪,因为我在页面中添加了jquery-ui引用。

更新2:

我更新的代码如下并且仍然收到“对象不支持此属性或方法”。

var fileCodeAutoComplete = $("<input/>"); 
    $(fileCodeAutoComplete).attr("id", "fileCodeAutoComplete"); 

    try { 
     $("input#fileCodeAutoComplete").autocomplete({ 
      source: availableTags 
     }); 
    } 
    catch(ex) { 
     alert(ex.message); 
    } 

    $(td).append(fileCodeAutoComplete); 

更新3:我做了一个新的项目和复制粘贴的代码和它的工作,但是,从现有的项目它似乎并不奏效。我认为这可能是微软图书馆正在采取的方式。

UPDATE 4:SOLUTION

的问题是,别人指的是jQuery的一个旧版本这是与jQuery UI的框架搞乱。

+0

(fileCodeAutoComplete).autocomplete()',它的工作原理:您也可以连接输入和自动完成的创作? –

+0

它确实将文本框添加到td,但没有任何自动完成功能。 – azamsharp

+0

它是否将自动完成行为附加到任何输入?我希望你需要遍历你的输入来将行为附加到多个行为上(例如使用.each) – kinakuta

回答

3
var fileCodeAutoComplete = $("<input/>"); 

尝试在选择rahter给予除标签,例如像

<input id="autocomplete" /> 

然后你给

$("input#autocomplete").autocomplete({ 
source: availableTags 
}); 

您可以参阅link

+0

这看起来是正确的,因为没有ID会让浏览器很难找到首先分配事件处理程序的元素 – Populus

+0

如果要在页面中的每个输入中使用它,请在jQuery中使用输入选择器,如jQuery (“:input”) – satti

+0

请看我更新的答案! – azamsharp

1

你有没有尝试给输入标签添加属性?是这样的:

var fileCodeAutoComplete = $("<input type='text' />"); 

另外,怎么样努力已知输入元素上自动完成,看是否自动完成功能打破它,或者如果它是动态输入字段要添加的功能?

+0

刚试过!自动完成调用它甚至不创建文本框。如果我删除该调用,它确实会创建TextBox。 – azamsharp

+0

如果我没有弄错,''的默认类型是'text'。 – Gabe

+0

是的默认是文本,这就是为什么我不包括它。 – azamsharp

0

对我的作品在JS小提琴:http://jsfiddle.net/bH9ab/1/

我用你原来的代码几乎逐字(比嘲讽表格单元格添加输入等)。

验证对jQuery UI的引用是否正确(并且没有损坏,截断等)。本地计算机)上,您可以指向谷歌的CDN:

https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/jquery-ui.min.js

+0

不确定!也许一些其他库正在搞砸 – azamsharp

+0

@azamsharp - 你确定jQuery UI的引用是正确的吗?我知道你说过你直接在网页上,但是你确认网址正在工作吗? –

+0

尝试使用jQuery('input#fileutoComplete')而不是$('.... – Populus

1

当你声明:

var fileCodeAutoComplete = $("<input/>"); 

这已经是一个jQuery对象,你不必把它包装在$( )。如果你把`$(TD).append()`前`$

var fileCodeAutoComplete = $("<input/>") 
    .autocomplete({ 
     source: availableTags 
    }) 
    .appendTo(td);