0

我正在使用 jquery Ui 进行多值自动完成,它工作正常,但是在选择第一个建议并且对于下一个请求它发送整个文本框值之后它没有拆分例如:假设在自动完成文本框中我输入了“A”它给出了像“ABC”这样的建议',' ACB ' 和更多值,现在我将选择 ' ABC ' 并且自动完成文本框看起来像 ' ABC , ' 我会输入 ' B ' 听到它应该只发送 ' B ' 到服务器而不是发送 ' ABC ,乙'

听到我想要的是:在选择第一次建议后,我应该发送一个在“,”之后出现的请求,我该怎么做

这是我的代码

$(function() {

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

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

$( "#authorList" ).bind( "keydown", function( event ) {
    if ( event.keyCode === $.ui.keyCode.TAB &&
        $( this ).data( "ui-autocomplete" ).menu.active ) {
      event.preventDefault();
    }
  })
  .autocomplete({
        source: function (request, response) {
            $.ajax({
                url: '${pageContext.request.contextPath}/catalogue/getMultiAuthor.action',
                dataType: "json",
                data:{"term":request.term},
                success: function (data) {
                response($.map(data, function (term) {
                        return {

                           label: 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 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;
    }
  });

});

4

1 回答 1

0

由于这个原因,您要发送完整的期限:data:{"term":request.term}

只需将其更改为data:{"term":extractLast(request.term)}

于 2013-09-27T20:12:52.167 回答