Советую взглянуть на
Select2, в целом хороший плагин для похожих целей.
Насчет исправления опечаток тут сложнее, нужно писать свою логику нечеткого поиска(либо искать готовые решения), это достаточно серьезная задача и скорее всего ее нужно будет подбивать под ваш конкретный случай.
Хотя конечно можно обойтись тупым простым алгоритмом в который будет хард код с забитыми самыми популярными опечатками и автоматическим поиском альтернатив при нулевом результате после ввода пользователя, но опять таки, городов много, варианты на многие сочетания обязательно найдутся.