【发布时间】:2015-03-04 14:43:57
【问题描述】:
我有一个使用 select2 的文本字段。这是初始化:
$("#foo").select2({
createSearchChoice:function(term, data) {
if ($(data).filter(function() {
return this.text.localeCompare(term)===0;
}).length===0)
{return {id:term, text:term};}
},
initSelection : function (element, callback) {
var data = {id: element.val(), text: element.val()};
callback(data);
},
tags:[],
tokenSeparators: [","],
data: [...data goes here...]
});
在此字段中,用户应该输入一个数字,或从列表中选择项目。如果用户放入的项目未出现在列表中,则应将其创建为简单标签(id 和 text 相同)。这行得通。
当我以编程方式设置值时不起作用:
myvar.find('.placeholder lorem-ipsum').val(number).trigger("change");
它现在的工作方式是,当我将它设置为任何值时,它会毫无怨言地接受它,制作一个新的简单标签。但是,如果我要完全删除 initSelection 参数,它将忽略未知值,并使用从列表中获取的已知值(其中标签很复杂 - id 和文本不同)。
如果我设置给字段的值在列表中找到,我如何制作它,它将使用该项目,否则制作一个简单的标签?它现在的工作方式(仅限简单标签)在某种程度上是可以接受的,但我更希望它能够理想地工作。
编辑: 我已经举例说明了它如何使用和不使用 initSelection 参数。
http://jppk.byethost12.com/with.html
http://jppk.byethost12.com/without.html
简而言之,我希望它在我推送“添加新项目”时像 with.html 一样工作,我希望它在我推送“添加现有项目”时像 without.html 一样工作。
【问题讨论】:
-
请在jsfiddle.net 中举例说明您要完成的工作。
-
@Neoaptt 我如何让 jsfiddle 使用 select2?它似乎不在库列表中。我想要的很简单,真的。在列表中查找标签?在列表中使用标签。在列表中找不到标签?做一个新的。
-
@Neoaptt 我已经编辑了一对示例。
标签: javascript twitter-bootstrap jquery-select2