我输入了以下值:e22,e33,e35
在该输入上,我想使用上面提到的默认值初始化select2
。
我用来尝试这样做的代码如下:
$('input[name="postal_code"]').select2({
placeholder: 'search a postal code',
allowClear: true,
minimumInputLength: 2,
maximumSelectionSize: $maxInput,
multiple: true,
tokenSeparators: [",", " "],
createSearchChoice: function(term, data) {
if ($(data).filter(function() {
return this.text.localeCompare(term)===0;
}).length === 0) {
return {
id: term,
text: term
};
}
},
ajax: {
url: $url,
dataType: "json",
data: function(term, page) {
return {
query: term
};
},
results: function(data, page) {
console.log(data);
return {
results: data,
};
}
},
initSelection: function(element, callback) {
var data = [];
$(element.val().split(",")).each(function(i, v) {
console.log(v);
data.push({
text: v
});
});
console.log(data);
callback(data);
}
});
问题是输入在选择初始化之后,而不是具有以下标记:e22,e33,e35;我只有e22
任何想法,为什么剩下的都被切断了?
JSFiddle:http://jsfiddle.net/alleks/fMXxL/
答案 0 :(得分:1)
它看起来不起作用的原因是因为它正在为每个对象寻找一个唯一的id。如果我们为每个对象添加一个id,那么它可以工作......
initSelection: function(element, callback) {
var data = [];
var counter = 1;
$(element.val().split(",")).each(function(i, v) {
console.log(v);
data.push({
id: counter,
text: v
});
counter++;
});
console.log(data);
callback(data);
}
然而,初始化数据的方式如果我在字段中输入并输入我的选择并点击space
或,
,则不会创建新标记...
我更幸运的是,使用tags:
属性返回数据数组就是一个例子。
不确定上述示例是否会有所帮助,但我认为我会将其包含在内,以防您使用tags:
初始化数据