2013-06-28 31 views
2

我試圖將Twitter的預輸入插件的Web應用程序中所有可用值。我initiliaze一些與預輸入插件,這在某種程度上似乎工作預輸入輸入字段。該插件被啓用。然而,Id似乎不匹配我正在使用它選擇顯示的值寫入的查詢字符串。如果我例如選擇寫「NUU」,那麼它同時也顯示前3個字母是完全不同的價值觀。嘰嘰喳喳預輸入顯示,而不是隻匹配值

我的HTML看起來像這樣:

而且我的JavaScript看起來像這樣:

$(selector).each(function(){ 
    var jsonUrl = $(this).attr('data-json'); 
    $(this).typeahead({ 
     name : 'berths', 
     remote : { 
     url : jsonUrl, 
     filter : myfilter 
    } 
    }); 
}); 


myfilter = function(parsedResponse) { 
    var datums = $.map(parsedResponse, function(berth) { 
    var datum = { 
     name : berth.name, 
     value : berth.name + (berth.alias ? " (" + berth.alias + ")" : ""), 
     tokens : [ berth.name, berth.alias ], 
     latitude : berth.latitude, 
     longitude : berth.longitude 
    }; 

    return datum; 
    }); 

    return datums; 
}; 

任何線索,我在做什麼錯?

回答

2

雖然typeahead.js將過濾給定查詢的本地和預取數據,但它不會過濾遠程數據。 typeahead.js的操作假定,對於遠程數據,過濾是在服務器端完成的。

好像使用預讀可能對你的使用情況更好的選擇:

$(selector).typeahead({ 
    name : 'berths', 
    prefetch : { 
    url : jsonUrl, 
    filter : myfilter 
    } 
}); 
+0

感謝。我以前曾嘗試使用預取,這是由於另一個錯誤而從未執行的。這使我困惑了一下。然而,我現在使用預取和遠程的組合來工作,這符合我的需求。 –

1

你在jsonUrl失蹤查詢數據?預輸入需要在URL替換字符串在字段中鍵入的數據替換,所以URL看起來應該像:

/my/data/source/?text=%QUERY 

其中%QUERY替換爲輸入字段內容。

注意%QUERY是默認的;你應該可以使用任何你想要的字符串,但我還沒有能夠得到那個工作。