2016-09-06 44 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

相关问题