2015-12-31 25 views
0

我有使用Struts的autocompleter通過JSON填充的選擇框:檢查JSON填充的Struts autocompleter

<sj:autocompleter 
    id="stop" 
    name="stopId" 
    href="%{stopsUrl}" 
    list="stops" 
    listValue="stopName" 
    listKey="stopId" 
    autocomplete="true" 
    loadMinimumCount="2" 
    delay="200" 
    tabindex="1" 
    onSelectTopics="onStopSelected" 
/> 

這使得一個Ajax請求stopsUrl返回各自有一個stopIdstops對象的列表stopName以及stopType。 我需要在某處保存stopType(我猜想通過使用JQuery data函數),然後當用戶選擇一個停止時,onStopSelected函數將檢索stopType並對其執行某些操作。

所以我想我需要檢查JSON響應中的數據,以獲得每個站點的stopType。但是我怎樣才能訪問它?我需要訂閱哪個活動?有沒有可能使用Struts?

回答

0

也許有更好的辦法,但我已經這樣做了。

我已經刪除了,這是在這個行onSelectTopics="onStopSelected",而是使用(舊)jQuery的閱讀JSON在autocompleteopen事件:

$("#stop_widget").live("autocompleteopen", function() { 
    var stops = $(this).data("autocomplete").response.caller.arguments[0].stops; 
    var stopTypes = {}; 
    for (var i = 0; i < stops.length; i++) { 
     stopTypes[stops[i].stopId] = stops[i].stopType; 
    } 
    $("#stop").data("stopTypes", stopTypes); 
}); 
autocompleteselect事件

然後,我可以訪問stopType

$("#stop_widget").bind("autocompleteselect", function(event,data){ 
    var selectedStopId = data.item.key; 
    var stopTypes = $("#stop").data("stopTypes"); 
    var selectedStopType = stopTypes[selectedStopId]; 
    // do something with the selectedStopType 
});