私はjqueryコンボボックスを使用しており、そこに提供されているソースコードに依存しています。リモートソースから提供されたデータが必要なので、ajax で接続しました。ただし、AJAX は非同期呼び出しであるため、コンボボックスを検索結果データで更新する必要があります。
コンボボックスで検索をトリガーするにはどうすればよいですか?
スニペット:
/* In
$.widget( "ui.combobox", {
_create: function() {
// input definition
*/
.autocomplete({
delay: 0,
minLength: 0,
source: function( request, response ) {
// implements retrieving and filtering data from the select
var term = request.term;
if(term.length >= 2){
var abbreviation = term.substring(0,2);
if(!(abbreviation in cache)){
searchResultData = searchCities(abbreviation);
updateOptions(select, searchResultData);
cache[abbreviation] = 1;
}
}
// updates the search widget with options matching request.term
var responseData = filterOptionsForResponse(select, term);
response(responseData);
},
コードの残りの部分は、jquery サイトで提供されているとおりです。searchCities(abbreviation)
上記のコードは、オブジェクトのローカル配列を返すときに完全に正常に機能します。
searchCities(abbreviation)
: 略語に一致する都市の配列を返しますupdateOptions(select, data)
: 指定されたデータで選択コンボボックスのオプションを更新しますfilterOptionsForResponse(select, term)
: 正規表現に基づいて用語に一致するオプションでコンボボックスを更新します
ajaxを使用したsearchCitiesの現在のバージョン:
function searchCities(abbreviation){
if(!!abbreviation){
$.ajax({
url: "/wah/destinationsJson.action",
dataType: "json",
data: {
term: abbreviation
},
type: "GET",
success: function(data){
updateOptions($("#searchbox"), data.cities);
// $("#searchbox input").trigger('autocompleteselect', data.term);
// return data.cities;
}
});
}
}
上記のトリガーは検索をトリガーしません! このコンボボックスで検索をトリガーする方法を教えてください。
PS: jsfiddle/jsbin を提供できなかったことをお詫び申し上げます。