Показать весь список при вводе текстового поля автозаполнения jQuery - PullRequest
1 голос
/ 12 мая 2011

Я использую плагин jQuery для автозаполнения .Есть ли способ, когда пользователь вводит текстовое поле (которое подключено для автозаполнения), список появляется с верхними элементами алфавита?Какой-то триггер?

jQuery Code

$('.someTextbox').autocomplete({<br />    source: function (request, response) {<br />        $.ajax({<br />            url: serviceUrl + "/AddDocumentLinesService.svc/GetLineTypes",<br />            contentType: "application/json; charset=utf-8",<br />            dataType: "json",<br />            cache: false, <br />            data: {<br />                maxRows: 10,<br />                textStartsWith: request.term<br />            },<br />            success: function (data) {<br />                response($.map(data, function (item) {<br />                    return {<br />                        label: item.LineTypeCode + ' - (' + item.Description + ')',<br />                        value: item.LineTypeCode<br />                    }<br />                }));<br />            },<br />            error: function (XMLHttpRequest, textStatus, errorThrown) {<br />                alert(textStatus);<br />            }<br />        });<br />    }<br />});

Я бы хотел, чтобы второй раз пользователь вводил '$ ('.someTextbox ')' в текстовом поле появится список.

Ответы [ 3 ]

2 голосов
/ 12 мая 2011

Попробуйте:

 $('.someTextbox').focus(function() { $(this).search(); });

Согласно документации, .search () запускает поиск вручную. Вы также можете установить options.minChars на 0 и options.delay на что-то маленькое, что также должно работать. Смотри: http://docs.jquery.com/Plugins/Autocomplete/autocomplete#url_or_dataoptions

1 голос
/ 12 мая 2011

возможно, вы можете попробовать установить minChars параметр в 0 и иметь GetLineTypes проверку длины заданной строки. если это 0-длина - вернуть первые элементы алфавита.

другой вариант - подключиться к событию фокуса текстового поля и запустить функцию автозаполнения вручную. может быть, вы можете «обмануть» автозаполнение примерно так:

$('.sometextbox').focus(function() {
   if ($('.sometextbox').val().length ==0) { 
   //no text entered yet
   $('.sometextbox').val('  '); //insert 2 white spaces in order to trigger the autocomplete
}
});
0 голосов
/ 07 апреля 2012

Все ответы верны. Я добавляю это, поскольку minChars устарела в новых версиях.Используйте minLength.Set minLength : 0Также вы можете рассмотреть возможность использования кнопки рядом с текстовым полем, которая действует как выпадающий список и переключает все доступные параметры.Удачного кодирования!

Редактировать Кроме того, поскольку вы загружаете весь список, вы можете сделать задержку равной 0, переопределяя существующее поведение задержки, которое вы могли упомянуть.

$('input#textboxid').autocomplete('search','','delay',0);
...