Выбор принудительного ввода Twitter Bootstrap Typeahead

Я использую плагин Bootstrap Typeahead в своем приложении, и вот мой код (это пример). Я ищу способ проверить выбор пользователя (в основном, если ввод не соответствует ни одному результату -> очистить поле при размытии). Результат должен совпадать. Я искал везде и ничего не мог найти. Ваша помощь будет высоко оценена.

$('#search').typeahead({
    source: function (query, process) {
        var states = [];
        var map = {};

        var data = [
            { "stateCode": "CA", "stateName": "California" },
            { "stateCode": "AZ", "stateName": "Arizona" },
            { "stateCode": "NY", "stateName": "New York" },
            { "stateCode": "NV", "stateName": "Nevada" },
            { "stateCode": "OH", "stateName": "Ohio" }
        ];

        $.each(data, function (i, state) {
            map[state.stateName] = state;
            states.push(state.stateName);
        });

        process(states);
    }
});

person Dimitar Dimitrov    schedule 12.02.2013    source источник
comment
Возможный дубликат: stackoverflow.com/questions/13743498 / - вместо предупреждения просто используйте .val(''), чтобы очистить поле ввода.   -  person mccannf    schedule 12.02.2013
comment
Спасибо за помощь, однако это, похоже, не помогает -> проверьте это jsfiddle.net/Q4DBx/ 1   -  person Dimitar Dimitrov    schedule 12.02.2013


Ответы (2)


Если вы извлечете данные, состояния и карту, вы сможете использовать их в функции .blur для поиска:

 var data = [
            { "stateCode": "CA", "stateName": "California" },
            { "stateCode": "AZ", "stateName": "Arizona" },
            { "stateCode": "NY", "stateName": "New York" },
            { "stateCode": "NV", "stateName": "Nevada" },
            { "stateCode": "OH", "stateName": "Ohio" }
        ];
 var states = [];
 var map = {};

 $.each(data, function (i, state) {
    map[state.stateName] = state;
    states.push(state.stateName);
 });

 $('#search').typeahead({
    source: function (query, process) {
        process(states);
    }
}).blur(function(){
    if(states[$(this).val()] == null) {
      $('#search').val('');
    }
});
person mccannf    schedule 12.02.2013
comment
Да, это все. Спасибо друг ! - person Dimitar Dimitrov; 12.02.2013

Решение от mccannf работает, но в моем случае с if(parents.indexOf($(this).val()) === -1) { в событии размытия.

person leompeters    schedule 12.09.2014