2014-04-05 5 views
9

sto usando Bootstrap tag input nella mia forma, initalized con codice seguente:Bootstrap tag input - come precompilare oggetto Valori

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

Questo funziona bene, e torna da virgole elenco di ID separati, che li risparmio in db.

Il mio problema è come precompilare i valori dell'oggetto nel campo di input all'aggiornamento della pagina? L'aspetto dell'oggetto:

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

risposta

11

Per chiunque abbia bisogno questo:

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

dovrebbe essere semplice, riempire value = "" l'attributo di tale ingresso, ma senza javascript. Se si esegue questa operazione nel valore di formato corretto = "1,2,3", funzionerà

+0

Yup, ma ho bisogno il combo id + valore. Vedi la mia soluzione in fondo. – user1049961

+0

cosa succede se si memorizza quel valore come json in input e si usa json_encode e lo si decodifica nel backend? –

0

quindi sarà value = "[{" id ":" 80001 "," nome ":" Account Manager "}, {" id ":" 80251 "," nome ":" Projektant "}]"

5

Controllare il documento sul metodo here.

È possibile utilizzare:

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

e

$('input').tagsinput('refresh');