自动完成多个值并自动替换

时间:2012-11-16 11:18:44

标签: javascript jquery jquery-ui autocomplete jquery-autocomplete

我正在使用具有多个远程值的自动完成功能。 每次搜索只给我一个单词(输入文本中的单词用空格分隔)

我删除了返回false;从焦点功能,现在当我专注于自动完成结果时,它会自动更改输入文本,当我将焦点返回到输入文本时,它会显示我写的原始文本。

这是我想要的行为,但问题是当我搜索第二个单词时。 然后当我聚焦的自动完成搜索时,它会覆盖输入文本中的第一个单词。

我希望第一个单词保持不变,只有第二个单词(3,4 ......)更改。当我回到输入文本时,我会在收集搜索结果之前得到我写的原始文本。

我的代码:

    $(function() {

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


    $( "#tags" )

         // don't navigate away from the field on tab when selecting an item
        .bind( "keydown", function( event ) {
            if ( event.keyCode === $.ui.keyCode.TAB &&
                    $( this ).data( "autocomplete" ).menu.active ) {
                event.preventDefault();
            }
        })
        .autocomplete({
            source: function( request, response ) {
                $.getJSON( "http://test.dev/search.php", {
                    term: extractLast( request.term ),
                    complete: request.term,

                }, response );
            },
            search: function() {
                // custom minLength
                var term = extractLast( this.value );
                if ( term.length < 2 ) {
                    return false;
                }
            },
            focus: function(event, ui) {

            },
              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;
            }
        });


});

0 个答案:

没有答案