Я использую плагин JQuery Autocomplete like Google для поля формы foo
:Как реализовать Autocomplete как Google с динамическими параметрами запроса?
$(function() {
$("#foo").autocomplete({
minLength: 3,
limit: 5,
source : [{
url:"/my/ajax/controller/foo?data[name]=%QUERY%",
type:'remote'
}],
});
});
URI, /my/ajax/controller/foo?data[name]=%QUERY%
вызывает службу базы данных (который выполняет инструкцию, как SELECT * FROM foo WHERE name LIKE %name%
), prepaires данных, и обеспечивает простой массив как ['qwer', 'asdf', 'yxcv']
,
Теперь я хочу добавить автозаполнение в другое поле (bar
). Разница в том, что для фильтрации требуется значение для фильтрации, поскольку целевой SQL-запрос выглядит как SELECT * FROM bar WHERE number JOIN foo ON bar.foo_name = foo.name WHERE number LIKE %number% AND foo.name = foo_name
. Вот, как я пытался реализовать его:
$(function() {
$("#bar").autocomplete({
minLength: 3,
limit: 5,
valueKey:'number',
source : [{
url:"/my/ajax/controller/bar?data[number]=%QUERY%&data[foo_name]=" + $('#foo').val(),
type:'remote'
}],
});
});
Но значение foo
читается только один раз - когда страница загружена. Это означает, что изменения и текущее значение игнорируются. Я попытался передать обратный вызов вместо URL-адреса, но это не сработало.
Как получить «автозаполнение, как Google», работающее с динамически изменяющимися полями?