автозаполнение нескольких значений с использованием интерфейса Jquery не работает

0

Я использую jquery Ui для многозначного автозаполнения, и он работает нормально, но после того, как первое предложение выбрано и для следующего запроса оно отправляет целое текстовое поле, оно не разбивается, например: предположим, что в текстовом поле автозаполнения я напечатал "A", он дал предложение типа "ABC ',' ACB 'и еще несколько значений, теперь я выберу "ABC", а текстовое поле автозаполнения будет выглядеть как "ABC", и я наберу "B", услышав, что он должен отправлять только "B" на сервер, вместо этого отправляя "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;
    }
  });

});

Теги:

1 ответ

0
Лучший ответ

Вы отправляете полный термин из-за этого: data:{"term":request.term}

Просто измените это на data:{"term":extractLast(request.term)}

  • 0
    Спасибо за Ваш ответ

Ещё вопросы

Сообщество Overcoder
Наверх
Меню