如何从默认值中获取值,这意味着我希望仅由用户获取新值自定义插入。
现在我的默认值是“红色”,“绿色”,“蓝色”。 如果用户输入“黄色”,“黑色”。我只是希望通知新标记,因此我可以将数据库存储到下一轮用于下一个用户的预先填充。
我的select2版本是3.4.2
HTML:
<input id="tags" class="text-input form-control" type="text" name="tags" size="24" placeholder="tags" >
JS :(在文档中)
$(document).ready(function () {
$("#tags").select2({
tags: ["red", "green", "blue"],
maximumInputLength: 10
});
});
我使用的是旧版本的JQuery和旧版本的select2 小提琴链接: http://jsfiddle.net/jb4b2cnu/
怎么创造这个?
答案 0 :(得分:1)
如果我正确理解您的问题,添加新标记(如果不存在)并通知database
,那么您可以在创建newTag上设置变量通过选项createTag
,然后使用select2.select
事件发送或通知您db
新添加的tag
。例如:
$("#tags").select2({
tags: ["red", "green", "blue"],
maximumInputLength: 10,
createTag: function (tag) {
return {
id: tag.term,
text: tag.term,
isNew : true
};
}
}).on("select2:select", function(e) {
if(e.params.data.isNew){
alert('make db call here');
$(this).find('[value="'+e.params.data.id+'"]').replaceWith('<option selected value="'+e.params.data.id+'">'+e.params.data.text+'</option>');
}
});
示例 DEMO
答案 1 :(得分:1)
在研究旧版本文档后,回答(Select2 with createSearchChoice uses newly created choice for keyboard entry even given a match, bug or am I missing something?)的帖子并结合Guruprasad Rao的想法。
这是我可以在旧版本中存档的内容。
var result = ["red", "green", "blue"];
var isNew = false;
var varNew = [];
i = 0;
$("#tags").select2({
tags: result,
maximumInputLength: 10,
createSearchChoice:function(term, data) {
if(result.some(function(r) { return r.text == term })) {
return { id: term, text: term };
}
else {
isNew = true;
varNew[i++] = term;
return { id: term, text: term + " (new)" };
}
},
});