2013-02-12 18 views
7

Używam wtyczki Bootstrap Typeahead w mojej aplikacji, a tutaj jest mój kod (jest to przykład). Szukam sposobu sprawdzenia poprawności wyboru użytkownika (w zasadzie, jeśli dane wejściowe nie pasują do wyników -> opróżnij pole przy rozmyciu). Wynik musi być zgodny. Szukałem wszędzie i niczego nie mogłem znaleźć. Twoja pomoc byłaby bardzo ceniona.Twitter Bootstrap Wybór rodzaju głowicy

$('#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); 
     } 
    }); 
+0

Możliwe dup: http://stackoverflow.com/questions/13743498/bootstrap-typeahead-only-allow-list-values ​​- zamiast alertu po prostu użyj '.val ('')', aby opróżnić pole wejściowe. – mccannf

+0

Dzięki za pomoc, ale to nie działa -> sprawdź http://jsfiddle.net/Q4DBx/1/ –

Odpowiedz

11

Jeśli wyciąg z danymi, stany i mapa, można następnie wykorzystać je w funkcji .blur dla odnośnika:

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(''); 
    } 
}); 
+0

Tak, to wszystko. Dzięki stary ! –

+0

genialnie proste –

0

Rozwiązanie z mccannf działa, ale w moim przypadku z if(parents.indexOf($(this).val()) === -1) { na rozmycie zdarzenia.