2016-03-28 3 views
0

Я использую плагин 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», работающее с динамически изменяющимися полями?

ответ

0
$(function() { 
    $("#bar").autocomplete({ 
     minLength: 3, 
     limit: 5, 
     source : [ 
      function(q,add){ 
       $.getJSON("/my/ajax/controller/bar?data[number]=" + q + "&data[foo_name]=" + $('#foo').val(), function(resp) { 
        add(resp); 
       }) 
     }], 
    }); 
}); 
Смежные вопросы