【发布时间】:2013-12-24 03:23:49
【问题描述】:
背景信息:
首先,我创建一个输入文本字段、一个“添加”按钮和一个带有虚拟数据的 select2 菜单。当用户在输入文本字段中输入内容并单击添加时,该项目将添加到 select2 数据中。
为此,我必须销毁 select2 菜单,然后使用添加的数据重新创建它。我还没有找到将对象添加到数据中并刷新 select2 菜单的方法,根据研究,这是执行此操作的常用方法...
function addToSel2(text){
console.log(text);
$("#selectbox").select2("destroy");
startdata.push({id:text,text:text});
createSel2(startdata);
}
在 select2-opening 事件中,我阻止了默认操作(即打开),因此用户无法打开 select2 菜单(因为他们没有输入任何数据)。
$("#selectbox").select2({
data: {id: 0,text: 'name'},
placeholder: "add an item!",
}).on('select2-opening', function(e){
e.preventDefault();
});
问题:
一旦用户将第一个(以及之后的每一个)值添加到 select2 菜单,占位符就会更改,因此我知道已经创建了一个新的 select2 菜单,但是用户仍然无法打开菜单。好像 preventDefault 仍在影响新的 select2 菜单....
尝试解决方案
我在最初的 select2 菜单事件上尝试了“return false”,然后在包含数据的 select2 菜单上尝试了“return true”,并且发现了类似的结果。
这是一个代表我的问题的 jsfiddle。 http://jsfiddle.net/z6n5C/
【问题讨论】:
标签: javascript jquery jquery-select2