0

複数値のオートコンプリートにjquery Uiを使用していますが、正常に動作していますが、最初の提案が選択された後、次のリクエストではテキストボックスの値全体が送信され、分割されていません。たとえば、オートコンプリートテキストボックスに「 A 」と入力したとします。 '、' ACB ' およびいくつかの値、今度は ' ABC ' を選択し、オートコンプリート テキスト ボックスが ' ABC ' のように表示されます。 B'

私が欲しいものを聞いてください: 最初の提案を選択した後、「、」の後に存在する要求を送信する必要があります。

これは私のコードです

$(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 に答える