Отобразить jquery ui автозаполненный список событий фокуса
вот мой код, что-то не так с ним?
он, похоже, не отображает список в фокусе, мне все равно нужно нажать клавишу, прежде чем он отобразит список
<link media="all" type="text/css" href="#" onclick="location.href='http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.6/themes/smoothness/jquery-ui.css'; return false;" rel="stylesheet"/>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.6/jquery-ui.min.js"></script>
<script type="text/javascript">
$(function() {
$('#id').autocomplete({
source: ["ActionScript",
"AppleScript",
"Asp",
"BASIC",
"C",
"C++",
"Clojure",
"COBOL",
"ColdFusion",
"Erlang",
"Fortran",
"Groovy",
"Haskell",
"Java",
"JavaScript",
"Lisp",
"Perl",
"PHP",
"Python",
"Ruby",
"Scala",
"Scheme"
],
minLength: 0
});
}).focus(function(){
$(this).trigger('keydown.autocomplete');
});
</script>
<input type="text" id="id">
Ответы
Ответ 1
Похоже, вы прикрепляете обработчик focus()
к анонимной функции, а не к текстовому полю.
Попробуйте следующее:
<script type="text/javascript">
$(function() {
$('#id').autocomplete({
source: ["ActionScript",
/* ... */
],
minLength: 0
}).focus(function(){
// The following works only once.
// $(this).trigger('keydown.autocomplete');
// As suggested by digitalPBK, works multiple times
// $(this).data("autocomplete").search($(this).val());
// As noted by Jonny in his answer, with newer versions use uiAutocomplete
$(this).data("uiAutocomplete").search($(this).val());
});
});
</script>
Ответ 2
Решение, чтобы заставить его работать более одного раза
<script type="text/javascript">
$(function() {
$('#id').autocomplete({
source: ["ActionScript",
/* ... */
],
minLength: 0
}).focus(function(){
//Use the below line instead of triggering keydown
$(this).data("autocomplete").search($(this).val());
});
});
</script>
Ответ 3
Этот метод прямого вызова вызывает значение по умолчанию при фокусировке.
http://jsfiddle.net/steelywing/ubugC/
$("input").autocomplete({
source: ["Apple", "Boy", "Cat"],
minLength: 0,
}).focus(function () {
$(this).autocomplete("search");
});
Ответ 4
digitalPBK почти правильно...
Его решение работает не один раз, но не закрывает список выпадающих списков, когда вы выбираете элемент из списка с помощью мыши. В этом случае фокус возвращается к элементу управления, когда вы нажимаете кнопку, поэтому он снова открывает список, когда он должен закрывать его.
Здесь исправление, и это единственное, что работает для меня, как я думаю, он должен работать при использовании самой последней версии (1.8.11) функции autocomplete(). Когда элемент управления получает фокус, он не отображает все-на-фокусе, если выпадающий список уже показан...
<script type="text/javascript">
$(function() {
$('#id').autocomplete({
source: ["ActionScript",
/* ... */
],
minLength: 0
}).focus(function () {
if ($(this).autocomplete("widget").is(":visible")) {
return;
}
$(this).data("autocomplete").search($(this).val());
});
</script>
Ответ 5
$(this).trigger('keydown.autocomplete');
не работает для меня.
Это то, что я сделал:
$('#id').on( "focus", function( event, ui ) {
$(this).trigger(jQuery.Event("keydown"));
// Since I know keydown opens the menu, might as well fire a keydown event to the element
});
Ответ 6
В более поздних версиях вам может потребоваться изменить автозаполнение на uiAutocomplete
$(this).data("uiAutocomplete").search($(this).val());
Ответ 7
Если вы хотите что-то изменить в пользовательском интерфейсе jQuery, сделайте это с помощью jQuery UI.
Использовать пользовательский интерфейс jQuery Виджет Factory. Это легче поддерживать, быстрее и намного чище, чем прикреплять события к элементу.
$.widget('custom.autocomplete', $.ui.autocomplete, {
options: {
minLength: 0
},
_create: function() {
this._on(this.element, {
focus: function(event) {
this.search();
}
});
this._super();
}
});
Ответ 8
Общая цель автозаполнения заключается в том, чтобы выполнить нажатие клавиши и на основании буквы, которую мы вводим, она будет часто выполнять поиск по диким картам и показывать результат.
В любом случае, из приведенного выше кода я вижу, что:
фокус (функция() {
$ (Это).trigger( 'keydown.autocomplete');
который прикреплен, как сказано Codesleuth, к анонимной функции вместо Control.