使用jQuery自动完成按id搜索

时间:2012-02-01 04:35:06

标签: jquery

对于我的节点应用程序,我使用jQuery自动完成来搜索person的名称。每个人都有id号。现在当我输入id时,没有搜索列表应该显示不是id的人的名字。请在此指导

2 个答案:

答案 0 :(得分:0)

这样的事情应该有效:

  1. 将现有输入字段的名称更改为其他名称加上_autocomplete_label(例如)。
  2. 使用原始输入元素的name属性值创建一个隐藏的输入字段(这将包含我的ID值)。
  3. 为给定的jQuery UI自动完成实例创建自定义选择事件处理程序。
  4. 一些示例代码:

    
    $('input.your_AutocompleteClassForInputField').each(function() {
        var autoCompelteElement = this;
        var formElementName = $(this).attr('name');
        var hiddenElementID  = formElementName + '_autocomplete_hidden';
        /* change name of orig input */
        $(this).attr('name', formElementName + '_autocomplete_label');
        /* create new hidden input with name of orig input */
        $(this).after("<input type=\"hidden\" name=\"" + formElementName + "\" id=\"" + hiddenElementID + "\" />");
        $(this).autocomplete({source:'your_source_file_name', 
            select: function(event, ui) {
                 var selectedObj = ui.item;
                 $(autoCompelteElement).val(selectedObj.label);
                 $('#'+hiddenElementID).val(selectedObj.value);
                 return false;
            }
        });
    });
    
    

    希望有所帮助

答案 1 :(得分:0)

感谢您的回复。我会提供我的代码。

焦点:

function() {

   $('#search_input').catcomplete({
        appendTo: $('#searchresults'),

        source : function(request, response) {
            var filterValues = [];


            _.each(that.categories, function(category) {
                if (category.terms !== undefined && category.terms.length > 0) {
                    filterValues = filterValues.concat($.ui.autocomplete.filter(category.terms, request.term));
                }
            });

            response(filterValues);
        },

        select : function(event, ui) {
            $('#search_input').trigger('submit', ui.item);
        }
    });
}

当我输入id时,它返回列表中的id,但我不想在搜索列表上显示id,而是应显示名称。因此,用户应该能够通过名称和ID来搜索此人,搜索列表应该只返回两者的名称。