jquery 自动完成与类别选择

标签 jquery jquery-autocomplete

我正在使用带有类别选项的 jquery automplete,一切工作正常。现在我想让类别可供选择。我已经经历了很多事情,但没有任何效果。有什么方法可以使类别可选择而不是标签。

我的代码如下:

$.widget("custom.catcomplete", $.ui.autocomplete, {

    _renderMenu: function (ul, items) {
        var self = this;
        var currentCategory = "";
        $.each(items, function (index, item) {
            if (item.category != currentCategory) {
                ul.append("<li class='ui-autocomplete-category'>" + item.category + "</li>");
                currentCategory = item.category;
            }
            self._renderItem(ul, item);
        });
    },

});

$('#city').catcomplete({
    delay:0,
    source : function(request, response) {
        $.ajax({
            url : '${createLink(controller:"city", action:"ajaxData")}',
            data : {
                term : request.term
            },
            dataType : "json",
            success : function(data) {
                if (data.length > 0) {
                    response( $.map( data, function( item ) {
                        return {
                            label: item.label,
                            value: item.category,
                            category: item.category,
                        }
                    }));   
                }
                else{ 
                    response([{ category: 'No results found', val: "",label:""}]);
                }
            }
        });
    },  
    focus: function(event, ui) {
        $("#city").val(ui.item.category);
        return false;
    }   ,
    select: function( event, ui ) {
        window.location.href = ui.item.category;
    },      
}); 

最佳答案

这可以解决您的问题,但可能不是最佳解决方案。

我做了什么

  • 为类别选项添加了一个点击事件监听器,它将调用selectHandler()处理从自动完成列表中选择的选项。
  • 通过添加 ui-menu-item 将类别选项构建为菜单项类到 <li>标签,这将使类别选项具有与列表中其他选项相同的视觉效果。

现场演示@ JSFiddle:

http://jsfiddle.net/dreamweiver/bp0x1yc4/11/

JS 代码:

$(document).on('click', '.ui-autocomplete-category', function () {
    $("#search").val($(this).html());
    $("#search").catcomplete("close");
    selectHandler($(this).html());
});

var selectHandler = function (data) {
    //process selected data
    console.log("selected value: " + data);
};

关于jquery 自动完成与类别选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30804203/

相关文章:

javascript - 在一个页面的多个输入中实现 jQuery 自动完成

javascript - 我有一个检测 2 个 div 之间碰撞的函数。当碰撞结果为真时,如何执行新函数?

Javascript:如何验证 4 个相对字段大于另一个字段

javascript - jQuery 附加输入 - 转义属性

jquery - 失去焦点时自动完成检查

javascript - 在 jQuery 中使用 CSS 选择器数组

javascript - 使用 Jquery 创建新的表格行并将具有动态 id 的按钮添加到表格单元格

jquery - 在jqGrid树中选择多行

javascript - jquery autocomplete transformResult 自动聚焦属性不起作用

json - Jquery 使用 json 和参数自动完成