JQuery autocomplete - измените ответ на <tab>и <enter>нажатий клавиш - PullRequest
1 голос
/ 27 апреля 2011

У меня есть работающий блок автозаполнения на моем сайте, который я хочу работать как автозаполнение тегов в SO.

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

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

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

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

Как мне получить этот ответ?


Это мой 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 &&
                $( 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 Ответ

1 голос
/ 27 апреля 2011

Ознакомьтесь с демонстрацией нескольких значений .

...