2013-02-19 55 views
33

Select2从我的列表中加载所有项目成功,这是我在尝试在页面加载时选择特定值时发现的问题。例如:Select2不显示选定的值

::将select2放在特定的html元素中,即使加载了所有项目也没有选择任何值。

$('#my_id').select2(); 

::当加载页面时,我试图表现出选择特定项目,但不能按预期工作,因为即使选中,选择2不显示它。

$('#my_id').val('3'); //select the right option, but doesn't render it on page loads. 

如何使一个选择的选项,弹出页面加载时?

在此先感谢。

修订

::我如何加载所有选择2项(对不起,它的玉石,不是纯HTML):

label(for='category') Category 
    span.required * 
select(id='category', style='width:230px', name='category') 
    option(value='') - Select - 
    each cat in categories 
     option(value='#{cat.id}') #{cat.description} 

P.S:所有从我的列表项被加载。

::我如何初始化选择2:

只要把下面的代码行对我的JavaScript和它的成功:

$('#category').select2(); 

::我怎样,我想选择一个特定的值:

  • 第一次尝试:

    $('#category').select2(
        { 
         initSelection: function(element, callback) { 
          callback($('#field-category').val()); 
         } 
        } 
    ); 
    
  • 第二次尝试:

    $('#category').val($('#field-category').val()); 
    

P.S:#field-category具有价值的一个隐藏的输入字段和工程确定。

谢谢,伙计们!

+0

“3”是您想要选择的选项的值吗?你是否将代码包装在文档就绪函数中? – Johan 2013-02-19 12:27:08

+0

你可以分享标记/数据为select2 – 2013-02-19 12:30:19

+0

@Ito看到我更新的答案,看起来像不需要'initSelection' – 2013-02-19 12:37:02

回答

45

您需要使用initSelection选项设置的初始值。

如果您使用的是预先定义select元素创建的选择2,你可以用下面的方法

$('select').select2().select2('val','3') 

演示:Fiddle

+0

我试过initSelection之前,也许我的代码是错误的。我会在这里展示如果你能分享代码 – Ito 2013-02-19 12:29:57

+0

,我们可以试试 – 2013-02-19 12:30:43

+0

谢谢Arun,为我工作。当页面加载时,select2会加载一个特定的值。 – Ito 2013-02-19 12:43:12

0

这里是如何使val中选择2只选择对应的元素。 由于某些原因,select2不提供按id查找选择的功能。

初始化:

$("#thing").select2({data:sources, initSelection: function(item, callback) { 
    // despite select2 having already read the whole sources list when you 
    // do .val(n) you have to explicitly tell it how to find that item again. 
    var to_be_selected = null; 
    $.each(sources, function(index, thing) { 
    if (thing.id == item.val()) { 
     to_be_selected = thing; 
     return; 
    } 
    }) 
    callback(to_be_selected); 
}}) 

正常码

// to load the thing with id==3 from the initial sources list. 
$("#thing").select2({'val': 3}) 
+1

也许它是'{val:3}'不是'{'val',3}'? – Kokizzu 2015-02-26 13:36:38

+0

'{val:3}'(不是真正的选项)和'{val,3}'(无效的语法)实际上不起作用。如果Select2重新初始化,您可能会感到幸运,但从长远来看这是一个幸运的副作用。 – 2015-05-24 00:36:38

22

VAL设置后添加一个触发器变化:

$('#my_id').val('3').trigger('change'); 
+2

现在这是在4.0.0中设置值的推荐方式,因为它一致地工作,并匹配正常的'