Javascript 如何从AUI自动完成列表中获取所选项目

Javascript 如何从AUI自动完成列表中获取所选项目,javascript,jquery,yui,liferay-6,liferay-aui,Javascript,Jquery,Yui,Liferay 6,Liferay Aui,我想在自动完成aui输入字段中显示数据库中的地址。一切正常。但我无法检索记录的地址号。如何使用自动完成列表的on change事件,或者如何访问所选项目的json对象 @Override public void serveResource( ResourceRequest resourceRequest, ResourceResponse resourceResponse ) throws IOException, PortletExcepti

我想在自动完成aui输入字段中显示数据库中的地址。一切正常。但我无法检索记录的地址号。如何使用自动完成列表的on change事件,或者如何访问所选项目的json对象

  @Override
        public void serveResource( ResourceRequest resourceRequest, ResourceResponse resourceResponse ) throws IOException,
                PortletException
        {


            String cmd = ParamUtil.getString(resourceRequest, "get_address");
            String myInputNode = ParamUtil.getString(resourceRequest, "addressAutocomplete");

            System.out.println("addressAutocomplete"+myInputNode);
            if (cmd.equals("get_address")) {
             getUsers(resourceRequest, resourceResponse,myInputNode);
            }
            }


    private void getUsers(ResourceRequest resourceRequest, ResourceResponse resourceResponse, String myInputNode) throws IOException, PortletException {

                JSONArray usersJSONArray = JSONFactoryUtil.createJSONArray();
                ThemeDisplay themeDisplay =    (ThemeDisplay)resourceRequest.getAttribute(WebKeys.THEME_DISPLAY);
                JSONObject userJSON=null;
                try {
                List<AddressMaster> userList=AddressMasterLocalServiceUtil.getAllAddressBySearchKey( myInputNode );
                                           for(AddressMaster addressMaster:userList){
                userJSON=JSONFactoryUtil.createJSONObject();
                userJSON.put("addressNumber",addressMaster.getAdrNummer());

                userJSON.put( "address",  addressMaster.getAddress())
         );

                       usersJSONArray.put(userJSON);
                }
                } catch (Exception e) {
                }
                PrintWriter out=resourceResponse.getWriter();
                out.println(usersJSONArray.toString());

                System.out.println("usersJSONArray"+usersJSONArray.toString());



            }
@覆盖
public void serversource(ResourceRequest ResourceRequest,ResourceResponse ResourceResponse)引发IOException,
PortletException
{
String cmd=ParamUtil.getString(resourceRequest,“获取地址”);
字符串myInputNode=ParamUtil.getString(resourceRequest,“addressAutocomplete”);
System.out.println(“addressAutocomplete”+myInputNode);
if(cmd.equals(“get_address”)){
getUsers(resourceRequest、resourceResponse、myInputNode);
}
}
私有void getUsers(ResourceRequest ResourceRequest、ResourceResponse ResourceResponse、字符串myInputNode)引发IOException、PortletException{
JSONArray usersJSONArray=JSONFactoryUtil.createJSONArray();
主题显示主题显示=(主题显示)resourceRequest.getAttribute(WebKeys.THEME\u DISPLAY);
JSONObject userJSON=null;
试一试{
List userList=AddressMasterLocalServiceUtil.getAllAddressBySearchKey(myInputNode);
for(AddressMaster AddressMaster:userList){
userJSON=JSONFactoryUtil.createJSONObject();
userJSON.put(“addressNumber”,addressMaster.getAdrNummer());
userJSON.put(“地址”,addressMaster.getAddress())
);
usersJSONArray.put(userJSON);
}
}捕获(例外e){
}
PrintWriter out=resourceResponse.getWriter();
out.println(usersjssonarray.toString());
System.out.println(“usersJSONArray”+usersJSONArray.toString());
}
Jsp文件

<portlet:resourceURL var="getAddress">
   <portlet:param name="get_address" value="get_address" />
 </portlet:resourceURL>


 <aui:input id="addressAutocomplete"  name="addressAutocomplete" label="group_choose_address"   style="width:700px"/>

<aui:script>
AUI().use('autocomplete-list','aui-base','aui-io-request','autocomplete-filters','autocomplete-highlighters',function (A) {
A.io.request('<%=getAddress%>',{
dataType: 'json',
method: 'GET',
on: {
success: function() {
//continents=this.get('responseData');
//alert(continents[0].name);
new A.AutoCompleteList(
{
allowBrowserAutocomplete: 'true',
activateFirstItem: 'true',
inputNode: '#<portlet:namespace/>addressAutocomplete',
resultTextLocator: 'address',
resultHighlighter:['phraseMatch'],
resultFilters:['phraseMatch'],
render: 'true',
source:this.get('responseData'),
});
}}
});                  
});
</aui:script>

AUI()。使用('autocomplete-list'、'AUI-base'、'AUI-io-request'、'autocomplete-filters'、'autocomplete-highlighters',函数(A){
A.io.请求(“”{
数据类型:“json”,
方法:“GET”,
关于:{
成功:函数(){
//大陆=this.get('responseData');
//警报(大陆[0]。名称);
新的自动完成列表(
{
allowBrowserAutocomplete:“true”,
activateFirstItem:'真',
inputNode:“#addressAutocomplete”,
resultTextLocator:'地址',
结果打火机:[“短语匹配”],
结果筛选器:[“短语匹配”],
渲染:“true”,
来源:this.get('responseData'),
});
}}
});                  
});

要准确地看到即将发生的事情有点棘手,但我认为您可以做到:

var address_ac = new A.AutoCompleteList({... as you have it...});
address_ac.on('select', function (e) {
    var selected_node = e.itemNode,
        selected_data = e.result;
});

这里的医生:

非常感谢。e、 result.raw.addressNumber将返回所选项目的地址id