#html #jquery #autocomplete #jquery-autocomplete
#HTML #jquery #автозаполнение #jquery-автозаполнение
Вопрос:
Я пытаюсь настроить автозаполнение, чтобы показывать мне предложения только при нажатии кнопки ввода, а не при вводе.. Как это возможно? Я думаю, было бы легко отредактировать код в самом файле jQuery, но я пытаюсь избежать этого, есть ли способ изменить функции или около того? На этом этапе мне нужно будет выполнить вызов Ajax, чтобы получить данные, которые будут использоваться в качестве «источника» поля автозаполнения, поэтому мне нужно будет изменить источник в соответствии с ответом..
Ответ №1:
Вы можете установить disabled = true при назначении плагина
$( ".selector" ).autocomplete({ disabled: true });
а затем включить при нажатии клавиши, я полагаю
$( ".selector" ).keypress(function(e){
if(e.keyCode == 13){ // can't remember exact syntax or keycode here
$( ".selector" ).autocomplete( "enable" );
}
});
дополнительная информация доступна на вкладке параметры и методы на странице справки пользовательского интерфейса
http://jqueryui.com/demos/autocomplete/#method-option
Комментарии:
1. Я добавил это к инициализации:
disabled: true
а затем добавил это$('.selector').keyup(function(e){ if(e.keyCode == 13){ // can't remember exact syntax or keycode here $(this).autocomplete( "option", "disabled", false ); } });
, он отключает предложения, пока я не нажму enter yes, но затем он ожидает ввода другого символа, чтобы дать предложения, я хочу, чтобы он сразу показывал предложения, затем я снова отключу его, пока снова не нажму enter.2.
$( ".selector" ).autocomplete( "enable" ).autocomplete( "search" )
возможно, это будет help..it должен вызвать поиск .. и вам нужно будет снова отключить его в случае закрытия. проверьте URL-адрес, который опубликовал Томми3. Да, отлично, именно так я и хочу, спасибо 🙂 в конце это выглядит так:
$('.selector').keyup(function(e){ if(e.keyCode == 13){ $(this).autocomplete( "enable" ).autocomplete( "search" ); $(this).autocomplete( "disable" ); // Here we remove the class that causes the suggestions restore opacity. $('.ui-autocomplete').removeClass('ui-state-disabled'); $('.ui-autocomplete').css('cursor','pointer'); } });
Ответ №2:
Подводя итог, вот как это сработало, спасибо за Tommy и Jags сначала отключите автозаполнение при инициализации, добавив эту опцию: disabled: true
Затем добавьте этот прослушиватель:
$('.selector').keyup(function(e){
if(e.keyCode == 13){
$(this).autocomplete( "enable" ).autocomplete( "search" );
$(this).autocomplete( "disable" );
$('.ui-autocomplete').removeClass('ui-state-disabled');
$('.ui-autocomplete').css('cursor','pointer');
}
});