2009-08-21 68 views

回答

13

由於bmoueskau提供了一個相當完整功能的實現,我想到了一個更裸機例子可能會有幫助。

var store = new Ext.data.JsonStore({ 
    url: '/your/ajax/script/', 
    root: 'data', // the root of the array you'll send down 
    idProperty: 'id', 
    fields: ['id','value'] 
}); 

var combo = new Ext.form.ComboBox({ 
    store: store, 
    displayField:'value', 
    typeAhead: true, 
    mode: 'remote', 
    queryParam: 'query', //contents of the field sent to server. 
    hideTrigger: true, //hide trigger so it doesn't look like a combobox. 
    selectOnFocus:true, 
    width: 250, 
    renderTo: 'autocomplete' //the id of the html element to render to. 
           //Not necessary if this is in an Ext formPanel. 
}); 

這家商店將接受響應從服務器格式如下:

{ 
    "success": true, 
    "data": [ 
     { 
      "id": 10, 
      "value": "Automobile" 
     }, 
     { 
      "id": 24, 
      "value": "Autocomplete" 
     } 
    ] 
} 

當然,你也可以設置你的店有Ext.data.XMLReader如果這是你的風格。

我希望能讓你開始。我無法強調Ext documentation的迷人之處。除了combobox samples之外,它還有一些相關示例,當我第一次製作一些自動補全程序時,我使用了這些示例。

+0

裸露的骨頭確實有幫助:) – 2009-08-29 19:12:24

+0

你明白了嗎? – wes 2009-08-30 19:11:20

+0

很棒的回答。有用! – clops 2012-02-04 14:56:05

6

沒有單獨的自動完成功能可以一般地附加到輸入 - 您只需使用ComboBox控件進行服務器端過濾(您可以使用「hideTrigger:true」配置,使它看起來仍然像普通輸入)。這可能是最近的例子,你想要什麼:

http://extjs.com/deploy/dev/examples/form/forum-search.html

+1

此外,我認爲它也可以設置爲本地過濾。 – Thevs 2009-08-22 08:52:46

+0

感謝bmoeskau的輸入。我已經提出了一個賞金,看看我能否得到一個或兩個例子。 – 2009-08-25 14:42:04