Решение, о котором идет речь, имеет одну проблему.
Он выполняет автозаполнение только после второго символа, потому что первый символ не может использоваться для запроса автозаполнения, таким образом, это тот, который вызывает keydown
и выполняет регистрацию элемента управления для автозаполнения.
Следующий код присоединяется ко всем (совпадающим) существующим и вновь созданным (Ajax) элементам focus
события и выполняет autocomplete()
регистрацию после того, как вы щелкнете по вкладке или введете вкладку:
$(document).delegate(":input[data-autocomplete]", "focus", function() {
$(this).autocomplete({
source: $(this).attr("data-autocomplete"),
});
})
в этом примере селектор находит все элементы, имеющие атрибут "data-autocomplete"
, тот же атрибут используется в качестве исходного URL:
<input id="1" data-autocomplete="++URL++">
Importarnt:
В зависимости от версии вы можете использовать функцию live()
, delegate()
или on()
. Подписи этих трех немного отличаются, но довольно легко выяснить, как они сопоставляются друг с другом:
$(selector).live(events, data, handler); // jQuery 1.3+
$(document).delegate(selector, events, data, handler); // jQuery 1.4.3+
$(document).on(events, selector, data, handler); // jQuery 1.7+