Аз го виждам така - ползваш promises, в момента, в който ти се върнат резултатите - store-ваш ги в колекция и откриваш input-a. Закачаш му oninput, при всяка промяна проверяваш с indexOf дали текущият стринг го има в някой от елементите от колекцията - ако го няма, режеш последния символ и променяш value-то на input-a и ако искаш го оцветяваш и му даваш readonly за някакво време, за да индикираш, че не могат да се правят такива "шмекерии".
Дай повече инфо и как го правиш ти и още по-конкретно какво трябва да се постигне ако това не ти помогне :)
Най-добре покажи кода ти, иначе няма да можем да ти помогнем. На oninput event-a можеш да използваш метода event.preventDefault(), което ще спре автоматичното добавяне на символ във формата и ще ти даде шанс да валидираш стринг-а, който се получава. Ето пример ->
Пример -> http://jsfiddle.net/q5o3a7n8/2/