Select2 仅按 id 设置选定值
Posted
技术标签:
【中文标题】Select2 仅按 id 设置选定值【英文标题】:Select2 set selected value by id only 【发布时间】:2013-10-23 07:07:22 【问题描述】:所以,我有搜索 wtform,其中一个字段用 select2 表示。它通过 ajax 依赖于另一个选择字段加载。加载步骤工作正常。但是,当我提交表单并收到结果数据时,我无法将所选值设置回 select2 字段,因为我只有 id,而且据我所知,initSelection 的回调方法需要 id 和文本。或者,也许我做错了什么。
这里是选择字段
$("#source").select2(
placeholder: "Выберите источник",
initSelection: function(element, callback)
callback(id: element.val(), text:element.val())
,
query: function(query)
query.callback(source_data)
)
我想要下面的东西。 select2 中已经存在这种 id 的数据,唯一的问题是如何选择它。
callback(id: element.val())
【问题讨论】:
element.val()
应该仍然在回调函数的范围内,所以你应该能够将它作为参数传递,不是吗?
并删除 () ?回调(id:element.val)
element.val() 给了我 id,如果我只在回调方法中使用它,我会得到“未定义”文本作为选定值。
试试 $(element).select2('val', element.val());
试过了。首先,我不能在没有定义 initSelection 的情况下调用 select2("val", value)。我认为这是因为我正在触发此选择的事件以实现依赖项。即使我删除触发器它也不起作用。
【参考方案1】:
这就是我能够解决这个问题的方法:
//sample preloaded select data
var preload_data = [id: '1', text:'<span id="user1">John</span>',id: '2', text:'<span id="user2">Tim</span>', id: '3', text:'<span id="user3">George</span>']
//the initSelection method
initSelection : function (element, callback)
var data = [];
var lookup = ;
for (var i = 0, len = preload_data.length; i < len; i++)
lookup[preload_data[i].id] = preload_data[i];
$(element.val().split(",")).each(function()
data.push(id: this, text: lookup[this].text);
);
callback(data);
【讨论】:
以上是关于Select2 仅按 id 设置选定值的主要内容,如果未能解决你的问题,请参考以下文章
如何为多个下拉菜单设置 jquery select2 的选定值?