2014-04-05 7 views
9

Używam Bootstrap Tagi Wejście w moim formularzu, initalized z następującego kodu:Bootstrap Tagi wejściowe - jak wstępnie wypełnić obiekt ceni

$('#looking_for_job_titles').tagsinput({ 
    itemValue: 'id', 
    itemText: 'name' 
}); 

// TypeAhead.js 
var job_scopes = new Bloodhound({ 
    datumTokenizer: function(d) { 
     return Bloodhound.tokenizers.whitespace(d.value); 
    },queryTokenizer: Bloodhound.tokenizers.whitespace, 
    limit: 100, 
    remote: { 
     url: 'http://www.domain.com/json.php?action=job_title&q=%QUERY' 
    } 
}); 

job_scopes.initialize(); 

$('#looking_for_job_titles').tagsinput('input').typeahead({ 
     itemValue: 'name' 
    }, 
    { 
     name: 'job_scope', 
     displayKey: 'name', 
     source: job_scopes.ttAdapter(), 
     templates: { 
      empty: [ 
       '<div class="empty-message">', 
       'no results found', 
       '</div>' 
      ].join('\n'), 
      suggestion: function(data){ 
       return '<p>'+ data.industry +'> <strong>' + data.name + '</strong></p>'; 
      } 
     }, 
     engine: Hogan 
    }).bind('typeahead:selected', $.proxy(function (obj, datum) { 
     this.tagsinput('add', datum); 
    }, $('#looking_for_job_titles'))); 

To działa prawidłowo i powraca przecinkami listę identyfikatorów rozdzielone, którą zaoszczędzisz do db.

Mój problem polega na tym, jak wczytać wartości obiektów z powrotem do pola wejściowego podczas odświeżania strony? Obiekt wygląda następująco:

[{"id":"80001","name":"Account Manager"},{"id":"80251","name":"Projektant"}] 

Odpowiedz

11

Dla każdego, kto potrzebuje to:

$.each(obj, function(index, value) { 
    $('#looking_for_job_titles').tagsinput('add', value); 
    console.log(value); 
}); 
0

powinno być proste, wartość wypełnienia = "" atrybut tego wejścia, ale bez javascript. Jeśli zrobisz to w poprawnej wartości formatu = "1,2,3", zadziała

+0

Tak, ale muszę id + wartość combo. Zobacz moje rozwiązanie na dole. – user1049961

+0

co jeśli przechowujesz tę wartość jako json w danych wejściowych i używasz json_encode i dekoduje go w backend? –

0

, więc będzie to wartość = "[{" id ":" 80001 "," name ":" Account Manager "}, {" id ":" 80251 "," name ":" Projektant "}]"

5

Sprawdź dokument na Method here.

Można użyć:

$('input').tagsinput('add', 'some tag'); 

i

$('input').tagsinput('refresh'); 
Powiązane problemy