Вы должны пройти через них, используя .each()
, чтобы выполнить .attr()
в нужной области:
$("input[type=text]").each(function(){
$(this).autocomplete({
source: "./json.php?id="+$(this).attr("id"),
minLength: 2
}).addClass("ui-widget ui-widget-content ui-corner-left");
}
Редактировать: Как уже упоминалось в комментарии, у вас есть LOT полей, например 1500+. Вы можете попытаться улучшить производительность, добавив класс в каждое поле и используя селектор .classname
, или, по крайней мере, сузьте начальный поиск до input[type="text"]
, хотя jQuery может сделать это уже для оптимизации.
Вы также можете попробовать установить параметр источника в событиях create
или search
автозаполнения, хотя последний может не работать. Не больно видеть, как это работает:
$("input[type=text]").autocomplete({
search: function(){
$(this).autocomplete("option", "source", "./json.php?id="+$(this).attr("id"));
},
minLength: 2
}).addClass("ui-widget ui-widget-content ui-corner-left");
В качестве альтернативы, вы можете даже связать событие фокуса самого поля ввода, чтобы установить источник:
$("input[type=text]").autocomplete({
minLength: 2
}).focus(function(){
$(this).autocomplete("option", "source", "./json.php?id="+$(this).attr("id"));
}).addClass("ui-widget ui-widget-content ui-corner-left");
Посмотрите, улучшит ли кто-нибудь из них производительность, у вас есть интересный тестовый пример.