Значение автозаполнения пользовательского интерфейса jQuery после щелчка мыши является старым значением

#jquery #jquery-ui #autocomplete

#jquery #jquery-ui #автозаполнение

Вопрос:

Я использую виджет автозаполнения пользовательского интерфейса jQuery. Мне нужно использовать выделенный текст для дальнейшей обработки, сразу после изменения или выбора.

Но когда пользователь нажимает на предложенное значение, вводимое значение передается.

 $( "#autocomplete" ).autocomplete({
source: function( req, resp ) {
    $.post( "/echo/json/", {
        json: '["Test1", "Test2", "Test3", "Test4", "Test5"]',
        delay: 1
    }, function(data) {
        resp( data );
    }, "JSON" );
},
select: function (event, ui) { alert($(this).val())}
});
  

Пример на этой скрипке: (попробуйте ввести «tes» и выбрать предложение с помощью мыши)

http://jsfiddle.net/M3Yur/

мне нужно использовать входное значение. в событиях изменения используется входное значение, оно должно работать в обоих случаях, когда выбран элемент автозаполнения, но также и когда вводится только значение, поэтому предупреждение приведено только для примера.

Есть какой-нибудь способ обойти это?

РЕДАКТИРОВАТЬ: в итоге я использовал: $(this).val(ui.item.value).val(); это решение всегда получает предполагаемое значение после события изменения.

Ответ №1:

Измените это:

 select: function (event, ui) { alert($(this).val())}
  

К этому:

 select: function (event, ui) {alert(ui.item.value);}
  

Новая скрипка: http://jsfiddle.net/M3Yur/4 /

Комментарии:

1. Спасибо, Джон / Джен, предупреждение является примером, мне нужно использовать входное значение. в событиях изменения используется входное значение, оно должно работать в обоих случаях, когда выбран элемент автозаполнения, но также и когда вводится просто значение

2. У вас есть оба значения. Может быть, если бы мы знали, когда срабатывает событие изменения??

3. Предложение действительно указало мне направление, которое работает для меня: $ (this).val(ui.item.value).val(); работает для меня

Ответ №2:

ui Аргумент содержит информацию, которую вы ищете:

 select: function (event, ui) { alert(ui.item.value); }