当用户未从下拉列表中选择选项时,jQuery ui 自动完成

标签 jquery jquery-ui jquery-ui-autocomplete

使用 jquery autocomplete plugin 时,当用户没有选择列表中的项目,而是键入有效值并按 Tab 键离开时,您会怎么做?

例如,当自动完成列表包含:

Cat
Dog
Fish 

用户输入 cat,但没有从自动完成的下拉列表中选择 Cat,而是按 Tab 键离开。因为他们没有从列表中选择任何项目,所以自动完成选择事件不会触发,我们失去了响应它的机会:

$('#Animal').autocomplete({
    source: url,
    minlength: 1,
    select: function (event, ui) {
        $("#Animal").val(ui.item.value);
        changeUsersAnimal(ui.item.id);
    }
});

我该如何处理这种情况?

最佳答案

您可能正在寻找Scott González' autoSelect extension 。如果用户输入有效值,只需在页面上包含此扩展即可触发 select 事件,并且不需要您进行任何更改:

/*
 * jQuery UI Autocomplete Auto Select Extension
 *
 * Copyright 2010, Scott González (http://scottgonzalez.com)
 * Dual licensed under the MIT or GPL Version 2 licenses.
 *
 * http://github.com/scottgonzalez/jquery-ui-extensions
 */
(function( $ ) {

$.ui.autocomplete.prototype.options.autoSelect = true;
$( ".ui-autocomplete-input" ).live( "blur", function( event ) {
    var autocomplete = $( this ).data( "autocomplete" );
    if ( !autocomplete.options.autoSelect || autocomplete.selectedItem ) { return; }

    var matcher = new RegExp( "^" + $.ui.autocomplete.escapeRegex( $(this).val() ) + "$", "i" );
    autocomplete.widget().children( ".ui-menu-item" ).each(function() {
        var item = $( this ).data( "item.autocomplete" );
        if ( matcher.test( item.label || item.value || item ) ) {
            autocomplete.selectedItem = item;
            return false;
        }
    });
    if ( autocomplete.selectedItem ) {
        autocomplete._trigger( "select", event, { item: autocomplete.selectedItem } );
    }
});

}( jQuery ));

以下是使用扩展程序的示例:http://jsfiddle.net/vFWUt/226/

关于当用户未从下拉列表中选择选项时,jQuery ui 自动完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10405932/

相关文章:

Jquery 自动完成显示 1 项的 2 行而不是将其切断

jquery-ui - jquery 自动完成焦点事件项未定义

jquery - 选择项目时使用 JQuery UI AutoComplete 返回数据集中的最后一项

javascript - 检查参数的 URL 并复制到输入中

javascript - 将 AJAX POST 的参数传递给 Grails Controller

javascript - jQuery UI 自动完成功能在 Rails 应用程序中不起作用

javascript - 动画命令完成后调用命令

javascript - JQuery:为什么 hoverIntent 在这里不是函数?

javascript - 当我在文本区域、MVC 4 Razor View 上放置引号时,JS 长度函数失败

javascript - 将 jQueryUI 可排序列表与表单一起使用