2012-09-14 92 views
7

鏈接回調函數撥弄:http://jsfiddle.net/nEapJ/(工作)的jQuery UI的自動完成功能:設定源通過不工作

var items = [{ 
    label : 'a', 
    value : 'a', 
},{ 
    label : 'b', 
    value : 'b', 
},{ 
    label : 'c', 
    value : 'c', 
}]; 

$('input').autocomplete({ 
    source : items 
});​ 

此代碼的工作,但是當我想通過回調函數 設置源,則 它不工作

鏈路撥弄:http://jsfiddle.net/B3RWj/(不工作)

$('input').autocomplete({ 
    source : function(request, response){ 
      response(items); 
      } 
});​ 

當i型, 'A',然後它的GI結果是a,b,c。

那麼,我錯過了什麼?

感謝,提前。

回答

2

在回調函數它給你做過濾..

documentation

提取物:

第三個變化,回調,提供最大的靈活性,並 可以用來將任何數據源連接到自動完成。回調 有兩個參數:

一個請求對象,其中有一個名爲「term」的屬性,它將 引用爲文本輸入中當前的值。例如,當用戶 在城市字段中輸入「new yo」時,自動完成條款將等於 「new yo」。響應回調,期望 的單個參數包含要提示給用戶的數據。 根據所提供的術語對此數據進行過濾 ,並且對於簡單本地數據(帶有 標籤/值/兩個屬性的字符串數組或對象數組),可以採用上述任何一種格式描述 。提供自定義 源回調來處理請求期間的錯誤非常重要。即使您遇到錯誤,您也必須始終調用響應回調 。這 確保小部件始終具有正確的狀態。

+2

我認爲,jquery-ui自動完成自動過濾通過匹配與給定源中的標籤鍵輸入charcters .. –

+1

實際上,它只自動過濾*本地源*選項 –

1

看到代碼:

$('input').autocomplete({ 
    source : function(request, response){ 
     var term = request.term; 
     var result = []; 

     //make your code here to filter the item by term. 
     //put them into the result array such as. 

     response(result);//this will show in the selection box. 
    } 
});​ 
0

如果你想使用的回調函數,而不是源數組或字符串,你必須在你的函數中添加 response($.ui.autocomplete.filter(items, request.term));

source : function(request, response){}

這是什麼autocomplet當你將你的源代碼定義爲一個數組或字符串時,e就會這樣做,但是對於你必須添加的回調函數。

相關問題