3

我想要遵循這個解決方案,但沒有得到任何運氣。 jQuery autocomplete for dynamically created inputs動態輸入文本框不綁定到自動完成

var autocomp_opt = { 
    source: function (request, response) { 

    $.ajax({ 
     url: "ServiceProxy.asmx/ByKeyWord", 
     cache: false, 
     data: "{ 'term':'" + request.term + "'}", 
     dataType: "json", 
     type: "POST", 
     crossDomain: "true", 
     contentType: "application/json; charset=utf-8", 
     error: function (xhr, textStatus, errorThrown) { 
      alert('Error: ' + xhr.responseText); 
     }, 
     success: function (data) { 
      response($.map(data, function (item) { 
       return item.split(","); 
      }));  
     }, 

     error: function (a, b, c) { 

     } 
    }); 
}, 
    minLength: 2 
}; 

然後當獲取生成我的輸入框,我想...

input = document.createElement("input"); 
    input.disabled = true; 
    input.className = this.FORM_INPUT_CLASS; 

    $(input.id).autocomplete(autocomp_opt); 
    table.rows[table.rows.length - 1].cells[1].appendChild(input); 

有沒有錯誤,但它似乎沒有,如果有人要正確綁定它...有任何想法 - 請發佈。謝謝。

+1

檢查您的瀏覽器的JavaScript控制檯。你最終會以'input.id'沒有被定義,很可能。 – Bojangles

+0

爲什麼不使用append和live jquey函數? – Mostafa

+0

input.id在其他地方定義並確實顯示正確。你能舉一個這樣的自動完成的例子。我看過的示例與鼠標點擊有關。但是,這只是一個預定義的功能,所以我不確定。 jQuery的語法正在殺死我...... – wirble

回答

0

它工作時,我補充一下:

此行後
$('#fieldname").autocomplete(autocomp_opt); 

table.rows[table.rows.length - 1].cells[1].appendChild(input); 

我想它只能在輸入框附加到某些東西時才能註冊。還值得注意的是,添加某種事件處理onfocus,onselect,即..,它也可以。雖然我懷疑,這是因爲輸入框在此處已完全呈現/添加。

3

嘗試改變這一行:

$(input.id).autocomplete(autocomp_opt); 

這樣:

$('#' + input.id).autocomplete(autocomp_opt); 
+1

當我看到這個時候讓我大笑,我犯這個錯誤很多。由於input.id沒有散列符號,因此jQuery只返回沒有元素,並且跳過綁定並正常失敗,沒有錯誤,僅僅是因爲它無法找到預期的目標。 – b01

+0

@jk這沒有奏效。它在輸入文本已經在頁面上時起作用。但不能動態地工作... – wirble