Combobox jQuery UI自动完成:设置活动项

Combobox jQuery UI自动完成:设置活动项,combobox,jquery-ui-autocomplete,Combobox,Jquery Ui Autocomplete,我试图用jQueryUIAutoComplete模仿一个简单的HTML选择元素的行为 是否可以在打开的事件上设置活动项(移动焦点)?基本上,我试图从html select元素中模拟selected=“selected”选项-如果字段中的值与列表中的值匹配,则将该列表项设置为“selected”。以下是您要查找的内容: 基本上,从jquery的网站上获取了新的功能,并更改了renderItem的功能。在jqueryui.com网站的示例中,更改: input.data("autocomple

我试图用jQueryUIAutoComplete模仿一个简单的HTML选择元素的行为


是否可以在打开的事件上设置活动项(移动焦点)?基本上,我试图从html select元素中模拟selected=“selected”选项-如果字段中的值与列表中的值匹配,则将该列表项设置为“selected”。

以下是您要查找的内容:

基本上,从jquery的网站上获取了新的功能,并更改了renderItem的功能。在jqueryui.com网站的示例中,更改:

   input.data("autocomplete")._renderItem = function(ul, item) {
                return $("<li></li>").data("item.autocomplete", item).append("<a>" + item.label + "</a>").appendTo(ul);
   };
input.data(“自动完成”)。\u renderItem=功能(ul,项目){
返回$(“
  • ”)数据(“item.autocomplete”,item).append(“+item.label+”).appendTo(ul); };
    致:

    input.data(“自动完成”)。\u renderItem=功能(ul,项目){
    $item=$(“
  • ”)数据(“item.autocomplete”,item)。追加(“+item.label+”); if(this.element.val()==item.value){ $item.addClass('ui-state-hover'); } 返回$item.appendTo(ul); };
    以下是您要查找的内容:

    基本上,从jquery的网站上获取了新的功能,并更改了renderItem的功能。在jqueryui.com网站的示例中,更改:

       input.data("autocomplete")._renderItem = function(ul, item) {
                    return $("<li></li>").data("item.autocomplete", item).append("<a>" + item.label + "</a>").appendTo(ul);
       };
    
    input.data(“自动完成”)。\u renderItem=功能(ul,项目){
    返回$(“
  • ”)数据(“item.autocomplete”,item).append(“+item.label+”).appendTo(ul); };
    致:

    input.data(“自动完成”)。\u renderItem=功能(ul,项目){
    $item=$(“
  • ”)数据(“item.autocomplete”,item)。追加(“+item.label+”); if(this.element.val()==item.value){ $item.addClass('ui-state-hover'); } 返回$item.appendTo(ul); };
    在朋友的帮助下,我终于找到了答案

    $('input[data-field=vat_rate]', view.el).autocomplete({
        source: function (request, response) {
            response(your_source_array);
        },
        minLength: 0,
        open: function (event, ui) {
            var term = ui.item.value;
            if (typeof term !== 'undefined') {
                $(this).data("autocomplete").menu.activate(new $.Event("mouseover"), $('li[data-id=' + term + ']'));
            }
        }
    }).click(function () {
        if ($(this).autocomplete('widget').is(':visible')) {
            $(this).autocomplete('close');
        } else {
            $(this).autocomplete('search');
        }
    }).data("autocomplete")._renderItem = function (ul, item) {
        var listItem = $("<li></li>")
            .data("item.autocomplete", item)
            .attr("data-id", item.id)
            .append('<a>' + item.label + '</a>')
            .appendTo(ul);
    };
    
    $('input[data field=vat_rate]',view.el)。自动完成({
    来源:功能(请求、响应){
    响应(您的源数组);
    },
    最小长度:0,
    打开:功能(事件、用户界面){
    变量项=ui.item.value;
    如果(术语类型!==“未定义”){
    $(this.data(“autocomplete”).menu.activate(新的$.Event(“mouseover”),$('li[data id='+term+']);
    }
    }
    })。单击(函数(){
    如果($(this.autocomplete('widget')。是(':visible')){
    $(this.autocomplete('close');
    }否则{
    $(this.autocomplete('search');
    }
    }).数据(“自动完成”)。\u renderItem=功能(ul,项目){
    变量listItem=$(“
  • ”) .data(“item.autocomplete”,item) .attr(“数据id”,item.id) .append('


    很完美!:)

    在朋友的帮助下,我终于找到了答案

    $('input[data-field=vat_rate]', view.el).autocomplete({
        source: function (request, response) {
            response(your_source_array);
        },
        minLength: 0,
        open: function (event, ui) {
            var term = ui.item.value;
            if (typeof term !== 'undefined') {
                $(this).data("autocomplete").menu.activate(new $.Event("mouseover"), $('li[data-id=' + term + ']'));
            }
        }
    }).click(function () {
        if ($(this).autocomplete('widget').is(':visible')) {
            $(this).autocomplete('close');
        } else {
            $(this).autocomplete('search');
        }
    }).data("autocomplete")._renderItem = function (ul, item) {
        var listItem = $("<li></li>")
            .data("item.autocomplete", item)
            .attr("data-id", item.id)
            .append('<a>' + item.label + '</a>')
            .appendTo(ul);
    };
    
    $('input[data field=vat_rate]',view.el)。自动完成({
    来源:功能(请求、响应){
    响应(您的源数组);
    },
    最小长度:0,
    打开:功能(事件、用户界面){
    变量项=ui.item.value;
    如果(术语类型!==“未定义”){
    $(this.data(“autocomplete”).menu.activate(新的$.Event(“mouseover”),$('li[data id='+term+']);
    }
    }
    })。单击(函数(){
    如果($(this.autocomplete('widget')。是(':visible')){
    $(this.autocomplete('close');
    }否则{
    $(this.autocomplete('search');
    }
    }).数据(“自动完成”)。\u renderItem=功能(ul,项目){
    变量listItem=$(“
  • ”) .data(“item.autocomplete”,item) .attr(“数据id”,item.id) .append('

    非常好用!:)

    您可以使用添加/删除活动类。与此线程上的其他
    \u renderItem
    代码相比,我更喜欢它

    [...previous autocomplete options]
    focus: function( event, ui ) {
            // Remove the hover class from all results
            $( 'li', ui.currentTarget ).removeClass('ui-state-hover');
    
            // Add it back in for results
            $( 'li',ui.currentTarget ).filter(function(index, element) {
    
            // Only where the element text is the same as the response item label
            return $(element).text() === ui.item.label;
        }).addClass('ui-state-hover');
    },
    [next autocomplete options...]
    
    您可以使用添加/删除活动类。与此线程上的其他
    \u renderItem
    代码相比,我更喜欢它

    [...previous autocomplete options]
    focus: function( event, ui ) {
            // Remove the hover class from all results
            $( 'li', ui.currentTarget ).removeClass('ui-state-hover');
    
            // Add it back in for results
            $( 'li',ui.currentTarget ).filter(function(index, element) {
    
            // Only where the element text is the same as the response item label
            return $(element).text() === ui.item.label;
        }).addClass('ui-state-hover');
    },
    [next autocomplete options...]
    

    此示例中您缺少什么:当我从列表中选择某个项目时,例如Clojure-列表将关闭,而当我再次打开它时,Clojure未被选中,它看起来与其他所有项目完全相同。此示例中您缺少什么:当我从列表中选择某个项目时,例如Clojure-列表将关闭,并且我再次打开它,Clojure未被选中,它看起来与其他所有项目都完全一样。嘿,谢谢,它几乎完成了我想要的操作-除了当我用键盘打开列表并尝试导航时,它从列表的顶部开始,而不是从“活动”开始一个。不过,我已经找到了一个解决方案,我将在这里发布。嘿,谢谢,它几乎满足了我的需求-除了当我用键盘打开列表并尝试导航时,它从列表的顶部开始,而不是从“活动”开始一个。不过,我已经找到了一个解决方案,我将在这里发布。这太棒了@zack我只是在使用jquery标记编辑器自动完成插件为其创建自定义ui时节省了两到三个小时。这太棒了@zack我只是在使用jquery标记编辑器自动完成插件为其创建自定义ui时节省了两到三个小时。