jQuery UI автозаполнение обновить данные

Я использую функцию автозаполнения jQuery ui.

var colors;

$(document).ready(function(){
        loadColors();
        $('#empf').autocomplete(colors);
}

function loadColors(){
 colors = new Array(getNumColor());
//in a loop save the colors to array using colors[i] = ...
}

function addColor(){
    ...
    color[n] = color;
}

когда пользователь вводит новый цвет, он сохраняется в массив цветов. Я переключаюсь на форму автозаполнения, но введенные данные недоступны, пока я не обновлю страницу.

есть идеи, как сделать новый цвет доступным для автозаполнения?

2 ответов


при обновлении цвета необходимо также обновить источник, который использует автозаполнение, например:

function addColor() {
    //add colors
    $('#empf').autocomplete("option", { source: colors });
}

вот пример демо делает это, добавление цвета и обновление источника автозаполнения один раз в секунду.


Я пробовал решение Ника Крейвера, которое выглядит вполне логичным. Возможно, это потому, что я использую строку URL, а не массив в качестве "источника". К сожалению, его решение не выполняет живое обновление для возвращаемых данных ajax. Чтобы обновить источник данных ajax, я обнаружил, что работает следующее:

element.autocomplete("option","source",url);
element.autocomplete("search");

Я думаю, что метод "поиск" необходим для исходных типов string или ajax URL.