Select2不显示所选值

Ito*_*Ito 35 jquery-select2

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

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

$('#my_id').select2();
Run Code Online (Sandbox Code Playgroud)

::当页面加载时我试图显示所选的特定项目,但是没有按预期工作,因为即使选中,select2也不会显示它.

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

如何在页面加载时弹出选定的选项?

提前致谢.

更新

::我如何加载所有select2项目(对不起,它的玉,而不是纯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}
Run Code Online (Sandbox Code Playgroud)

PS:我的列表中的所有项目都已加载.

::我如何初始化select2:

只需将以下行代码放在我的javascript上即可成功:

$('#category').select2();
Run Code Online (Sandbox Code Playgroud)

::我如何选择特定值:

PS:#field-category有一个隐藏输入字段的值,工作正常.

多谢你们!

Aru*_*hny 52

您需要使用initSelection选项来设置初始值.

如果使用预定义select元素来创建select2,则可以使用以下方法

$('select').select2().select2('val','3')
Run Code Online (Sandbox Code Playgroud)

演示:小提琴

  • 好的代码,顺便说一句,我想了解为什么我必须两次使用select2()? (2认同)
  • 现在,在Select2 4.0.0中,[赞成其他答案](http://stackoverflow.com/a/26857096/359284)不推荐这样做,并且可能会完全停止在Select2 4.1.0中工作. (2认同)

Kok*_*zzu 27

设置val后添加触发器更改:

$('#my_id').val('3').trigger('change');
Run Code Online (Sandbox Code Playgroud)

  • 现在这是在4.0.0中设置值的推荐方法,因为它一致地工作并匹配普通的`<select>`. (3认同)
  • 如果我不想触发更改并且仍然显示它怎么办? (3认同)

小智 5

解决这个问题的一个非常简单的方法是:

//Step1: Here assuming id of your selectbox is my_id, so this will add selected attribute to 1st option
$('#my_id option').eq(0).prop('selected',true);

//Step2: Now reinitialize your select box

//This will work, if you haven't initialized selectbox
$('#my_id').select2(); 
Run Code Online (Sandbox Code Playgroud)

或者

//This will work, if you have initialized selectbox earlier, so destroy it first and initialise it
$('#my_id').select2('destroy').select2();
Run Code Online (Sandbox Code Playgroud)


Sus*_*ari 5

这可能会有所帮助:

$('#mySelect2').val('1'); // Select the option with a value of '1'
$('#mySelect2').trigger('change'); // Notify any JS components that the value changed
Run Code Online (Sandbox Code Playgroud)

您可以在这里找到更多详细信息:

谢谢