私はBootstrapタグ入力をフォームに入力し、次のコードで初期化しています。
$('#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')));
これは正常に機能し、コンマで区切られたIDのリストを返します。これをdbに保存します。
私の問題は、ページ更新時にオブジェクト値を入力フィールドに事前入力する方法です。オブジェクトは次のようになります。
[{"id":"80001","name":"Account Manager"},{"id":"80251","name":"Projektant"}]
これが必要な人のために:
$.each(obj, function(index, value) {
$('#looking_for_job_titles').tagsinput('add', value);
console.log(value);
});
メソッドのドキュメントを確認してください ここ 。
次を使用できます。
$('input').tagsinput('add', 'some tag');
そして
$('input').tagsinput('refresh');
したがって、value = "[{" id ":" 80001 "、" name ":" Account Manager "}、{" id ":" 80251 "、" name ":" Projektant "}]"になります。
シンプルで、その入力のvalue = ""属性を入力しますが、JavaScriptは使用しないでください。正しい形式value = "1,2,3"でこれを行うと、機能します