2013-02-19 321 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中設置值的推薦方式,因爲它一致地工作,並匹配正常的'