2012-11-30 31 views
0

在該基本實施例使用jQuery自動完成:jQuery的自動完成 - 添加到底層的本地數據源陣列

$("#textboxid").autocomplete(
    { 
     source: testdata, 
     delay: 100, 
     minLength: 1 
    }); 

其中testdata是數據的本地陣列,什麼是推薦的方法具有對底層源陣列的任何更改,反映在自動完成選項?

目前,如果我隨後向testdata數組添加了一個新項目(即在文本框元素上已經設置了自動完成之後),我在自動完成列表中看不到這個新選項。如果我動態地將新文本框添加到頁面並設置爲自動填充,它會看到新選項。但現有的元素不。

回答

1

最靈活的方法是使用回調作爲源,它爲數據輪詢您的數組/對象/服務器並返回相應的響應。

這裏是你如何能測試這樣一個例子:

var testdata = ["foo","bar","baz","quux"]; 
$("#textboxid").autocomplete({ 
    source: function(request, callback) { 
     var possiblematches = testdata.filter(function(v) { 
      return v.match($.ui.autocomplete.escapeRegex(request.term)); 
     }); 
     callback(possiblematches); 
    }, 
    delay: 100 
}); 

演示:http://jsfiddle.net/Eeg5L/。有關source選項的文檔和更多信息,請參閱here

或者,你可以使用修改後陣源復位:

$("#textboxid").autocomplete("option","source", testdata); 

我會建議使用您的陣列中的二傳手,只要您修改陣列自動執行此操作。

+0

謝謝 - 很好地工作。決定這條路線是全面最好的,而不是每次「重新應用」自動完成。 – AdaTheDev

0

當您更新testdata運行以下命令:

$('#textboxid').autocomplete('option', 'source', testdata);