Я использую 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;
}
});
});
Вы отправляете полный термин из-за этого: data:{"term":request.term}
Просто измените это на data:{"term":extractLast(request.term)}