我有一个使用Struts自动完成器填充JSON的选择框:
<sj:autocompleter
id="stop"
name="stopId"
href="%{stopsUrl}"
list="stops"
listValue="stopName"
listKey="stopId"
autocomplete="true"
loadMinimumCount="2"
delay="200"
tabindex="1"
onSelectTopics="onStopSelected"
/>
这向stopsUrl
发出了一个Ajax请求,该请求返回stops
个对象的列表,每个对象都有stopId
和stopName
以及stopType
}。
我需要在某处保存stopType
(我猜通过使用JQuery data
函数),然后当用户选择停止时,onStopSelected
函数将检索stopType
和用它做点什么。
所以我认为我需要检查JSON响应中的数据以获得每个停靠点的stopType
。但我怎么能访问这个?我需要订阅哪个活动?是否可以使用Struts?
答案 0 :(得分:0)
也许有更好的方法,但我已经这样做了。
我已删除问题中的第onSelectTopics="onStopSelected"
行,而是使用(旧)jQuery来读取autocompleteopen
事件中的JSON:
$( "#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
});