2016-09-06 119 views
0

對於我正在處理的項目,使用Select2 jQuery插件(v4.0.3)。 select2實例來自ajax,我想知道我有一種以編程方式選擇選項的方法。以編程方式在AJAX中選擇選項Select2

我以前能夠通過設定值:

$('#input-field').val(['123','456']).trigger('change') 

當它是阿賈克斯來源。現在我需要使用來自ajax的Select2實例來處理這個問題。

我創建了一個jsFiddle實例,只是讓你可以看到我的意思。單擊Set Values應該在select2實例中選擇2個值。

謝謝!

P.S.我甚至嘗試了tags選項設置爲true,因此任何價值可以得到選擇(即使它不是一個從AJAX查詢結果),它仍然不工作

+0

看起來像你的ajax調用沒有得到正確的值,但是當清除select2框並單擊「設置值」鏈接一切正常。 – Dekel

回答

1

看來,你不能以編程方式選擇的東西,之前沒有從下拉列表中搜索和選擇。

當使用AJAX數據時,Select2會在發現它們時在底層select元素中添加先前未知的選項,從而工作。 .val()正在嘗試添加所需的項目,但只有已經存在的項目才能添加,其餘項目將被忽略。 Select2然後獲取change事件並相應地調整渲染。

這應該至少送你一個有用的方向:

$('#set-selected').click(function(e){ 
    e.preventDefault(); 
    var $select = $('.js-data-example-ajax'); 
    var targets = ["28200583","3620194"]; 
    targets.forEach(function(v,i,a){ 
    if(!$('option[value='+v+']',$select).length) { 
     $select.append('<option value="'+v+'">'+v+'</option>'); 
    } 
    }); 
    $select.val(targets).trigger('change'); 
}); 

通常這些UI庫的情況是,你操作控件初始化它以同樣的方式,通過在這種情況下調用.select2()。然而,我無法找到這種形式的命令,它可以滿足您在這種情況下的需求。

+0

昨天晚上再次工作時,我得出了同樣的結論。我發現了一個GIT問題。我認爲這是沿着這些方向發展的,只是希望Select2插件足夠酷,可以使傳遞給'$ .val()'調用的值的AJAX請求,但這同樣適用。謝謝! – Justin

相關問題