2012-01-25 89 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);