【问题标题】:How to get selected item from AUI autocomplete list如何从 AUI 自动完成列表中获取所选项目
【发布时间】:2014-11-05 05:24:37
【问题描述】:

我想在我的数据库中显示地址到一个自动完成的 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());



            }

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>

【问题讨论】:

    标签: javascript jquery yui liferay-6 liferay-aui


    【解决方案1】:

    确切地看到会发生什么有点棘手,但我认为你可以做到:

    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;
    });
    

    这里的文档:http://alloyui.com/versions/1.5.x/api/classes/AutoCompleteList.html#events

    【讨论】:

    • 非常感谢。 e.result.raw.addressNumber 将返回所选项目的地址 id
    猜你喜欢
    • 2013-11-09
    • 1970-01-01
    • 2011-09-19
    • 2011-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-13
    • 1970-01-01
    相关资源
    最近更新 更多