Автозаполнение Jquery — измените ответ на нажатия клавиш и

#javascript #ruby-on-rails-3 #jquery-ui #autocomplete #jquery-ui-autocomplete

#javascript #ruby-on-rails-3 #jquery-пользовательский интерфейс #автозаполнение #jquery-пользовательский интерфейс-автозаполнение

Вопрос:

У меня на моем сайте есть функционирующее окно автозаполнения, которое я хочу использовать как автозаполнение «Тегов» в SO.

Желаемое поведение

После того, как вы увидите выпадающий список предложений, нажатие tab или enter на клавиатуре «принимает» выделенный вариант, добавляет пробел и перемещает фокус в конец строки для ввода следующего тега.

Текущее поведение

После того, как вы получите выпадающий список, нажатие tab или enter заменяет все содержимое текстового поля текущим предложением, а курсор выделяет весь текст (вместо того, чтобы вставлять пробел и указывать на конец строки).

Как я могу добиться такого ответа?


Это мой javascript:

 $(function() { 
$( "#tags-field" )
    // don't navigate away from the field on tab when selecting an item
    .bind( "keydown", function( event ) {
        if ( event.keyCode === $.ui.keyCode.TAB amp;amp;
                $( this ).data( "autocomplete" ).menu.active ) {
            event.preventDefault();
        }
    })
    .autocomplete({
      source: function( request, response ) {
        $.ajax({
            url: "<%= autocomplete_tags_name_questions_url %>",
            dataType: "jsonp",
            data: {
                featureClass: "P",
                style: "full",
                maxRows: 12,
                name_startsWith: request.term
            },
            success: function( data ) {
                alert("Hi!"),
                response( $.map( data, function( item ) {
                    return {
                        label: item.name, //  (item.adminName1 ? ", "   item.adminName1 : "")   ", "   item.countryName,
                        value: item.name
                    }
                }));
            }
        });
      },
      minLength: 2
  });
});
  

Во-первых, .bind часть вверху, похоже, не работает. Как мне согласовать код здесь с кодом выше?

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

1. @sscirrus: С какой проблемой вы столкнулись? Почему .bind() код не работает?

2. @AndrewWhitaker он перемещается из поля, когда я нажимаю tab при выборе элемента.

3. @sscirrus: Попробуйте использовать event.which == ... вместо event.keyCode

4. @AndrewWhitaker — мне потребовалось некоторое время, но я добился своего! Спасибо, Эндрю.

5. @sscirrus: Отлично! В чем в итоге заключалась проблема?

Ответ №1: