0

我的标题可能有点难以理解。我正在尝试使用 jquery 自动完成来执行以下操作:

看到这个小提琴:

http://jsfiddle.net/96Y2y/

如果用户键入“j”,他会得到 Jochen + John。到目前为止,一切都很好。假设他选择约翰。我想知道的是,在他选择了 John 之后,输入中的所有内容都被删除了,除了括号中的数字。结果应如下所示:

7、

在这个动作之后,用户应该能够在逗号之后再次开始写一个名字,假设他写了“克里斯”,在他选择之后,输入应该如下所示:

7、9

等等。这可能吗?

我认为第一步是检查“onfinishedselect”动作

select: function (event, ui){
alert("|" + $("#targetID").val() + "|1stAlert");
}

就像在这篇文章中一样:jQuery UI autocomplete 在选择一个项目后触发新事件

亲切的问候,并感谢您的帮助,

托尼

4

2 回答 2

1

您可以使用多值演示的代码并使用正则表达式仅在括号之间插入数字:

function extractLast( term ) {
    return split( term ).pop();
}

function split( val ) {
    return val.split( /,\s*/ );
}

$(function() {
    var availableTags = [
        "Max (1)", 
        "Paul (3)",
        "John (7)",
        "Jochen (11)",
        "Chris (9)"
    ];
    $( "#tags" ) .autocomplete({
        minLength: 0,
        source: function( request, response ) {
            // We trim the search term before comparing to the source
            request.term = $.trim(request.term);
            // delegate back to autocomplete, but extract the last term
            response( $.ui.autocomplete.filter(
                availableTags, extractLast( request.term ) ) );
        },
        focus: function() {
            // prevent value inserted on focus
            return false;
        },
        select: function( event, ui ) {
            var terms = split( this.value );
            // remove the current input
            terms.pop();
            // add the number between parentheses for the selected item
            var num = ui.item.value.match(/\((\d+)\)/);
            var value = num[1];
            terms.push( value );
            // add placeholder to get the comma-and-space at the end
            terms.push( "" );
            this.value = terms.join( "," );
            return false;
        }
    });
});

在此处查看 jsFiddle:http: //jsfiddle.net/96Y2y/2/

于 2013-02-15T09:54:30.347 回答
0

也许最好的解决方案是将数字放在另一个不是自动完成的字段中。

您可以使用此插件的功能“onItemSelect”来做到这一点https://github.com/dyve/jquery-autocomplete

于 2013-02-15T09:28:23.400 回答