javascript - jquery UI 自动完成的延迟初始化

标签 javascript jquery jquery-ui autocomplete

我想延迟初始化 jQueryUI 自动完成的源选项。我知道可以将函数传递给源选项,但我想延迟初始化,直到用户真正开始使用自动完成功能。

我尝试等待搜索事件,然后设置源选项,但这没有效果。

var availableTags = [
    "ActionScript",
    "AppleScript",
    "Scheme"
    ];
$("#searchFirstTransactionStateInfo_searchPartnerId").autocomplete({
    source : [],
    minLength: 0,
    search: function( event, ui ) {
        $(event.target).source = availableTags;
    }
});

如何延迟设置源选项,直到用户开始使用 UI 元素?

注意:为了简单起见,我使用了固定数组。最后我想调用一个AJAX函数。

最佳答案

好吧,如果您使用一个函数作为源参数,并让该函数执行 get 请求(当然是 ajax),它实际上只会在您输入内容时才开始发出请求。例如,打开网络选项卡并开始在此 UI 示例中键入:

http://jqueryui.com/autocomplete/#multiple-remote

$(function() {
    function split( val ) {
        return val.split( /,\s*/ );
    }
    function extractLast( term ) {
        return split( term ).pop();
    }

    $( "#birds" )
    .autocomplete({
        source: function( request, response ) {
            $.getJSON( "search.php", {
                term: extractLast( request.term )
            }, response );
        },
        search: function() {
            // custom minLength
            var term = extractLast( this.value );
            if ( term.length < 2 ) {
                return false;
            }
        },
        focus: function() {
            return false;
        },
        select: function( event, ui ) {
            var terms = split( this.value );
            // remove the current input
            terms.pop();
            // add the selected item
            terms.push( ui.item.value );
            // add placeholder to get the comma-and-space at the end
            terms.push( "" );
            this.value = terms.join( ", " );
            return false;
        }
    });
});

关于javascript - jquery UI 自动完成的延迟初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24626591/

相关文章:

Javascript if 语句条件不满足?

javascript - jQuery 动画背景大小属性

jquery - ajax成功挂起浏览器

jquery - 如何防止 jQuery UI Selectable 插件中的多重选择

javascript - 使用 jQuery 和 jQueryUI 显示/隐藏 div

javascript - 错误 : Hydration failed because the initial UI does not match what was rendered on the server with useSession() and react-bootstrap

javascript - 在此上下文中元素 div 不允许作为元素 h5 的子元素

Javascript 测试带有键/值的哈希表

javascript - Ext Js 4 "white-space"仅适用于元素中的一个网格

javascript - 有什么方法可以在没有 JavaScript 的情况下拉伸(stretch) div 吗?