【问题标题】:How to programmatically select multiple options with Chosen.JS multiple select如何使用 Chosen.JS 多选以编程方式选择多个选项
【发布时间】:2013-09-02 10:48:01
【问题描述】:

我无法弄清楚如何使用 selectedJS/chosen.js 以编程方式在多项选择中选择多个值,并且这些值仍然绑定到我的 ng-model (angularJS)。

案例:我有一个用户列表,其中一些用户已经保存在当前项目中。我想将这些用户显示为选定的(但我不知道如何)。

我已经尝试找到我想要预选的用户的索引,并让他们像这样“被选中”:

$('.chzn-container-multi').val(0).trigger('liszt:updated');
$('.chzn-container-multi').val(1).trigger('liszt:updated');
$('.chzn-container-multi').val(2).trigger('liszt:updated');

但这只会选择最后一个。

任何帮助将不胜感激!

编辑

在#Marek Kowalski 的帮助下,我能够在我的列表中选择值,但它没有应用于与我的下拉列表连接的 ng-model,有人对此有解决方案吗?

【问题讨论】:

标签: javascript jquery angularjs jquery-chosen


【解决方案1】:

选择多个值并更新选择的值可以通过这个单行来完成

对于版本

$('.chzn-container-multi').val([0,1,2]).trigger('liszt:updated');

OR 版本 > 1.0

$('.chzn-container-multi').val([0,1,2]).trigger('chosen:updated');

【讨论】:

  • 这个有效。传递值数组,而不是多次传递不同的值。
  • @NalinAgrawal:好吧,如果您在不同时间传递不同的值,那么只会选择最后一个。这正是 OP 想要解决的问题。
【解决方案2】:

我不确定这是推荐的方法,但对我有用的解决方案是手动更改选项的 selected="selected" 属性,然后触发“liszt:updated”事件。要选择前 3 个选项,请使用以下代码:

$('select option:nth-child(1)').attr('selected', 'selected');
$('select option:nth-child(2)').attr('selected', 'selected');
$('select option:nth-child(3)').attr('selected', 'selected');
$('select').trigger('liszt:updated');
// since version 1.0 the event name is changed to
$('select').trigger('chosen:updated');

【讨论】:

  • 我尝试过使用你的方式,但即使我设法将我的一些“用户”显示为选中,它也不能完全解决我的问题。我正在使用 angularJS,并且使用 angularJS 和 ChosenJS 进行普通选择,每当我手动选择某些内容时,它也会更新我的 ngModel,但在使用多重选择器时它不会更新。我已经使用您的示例作为指导更新了我上面的问题。
  • 啊,我不知道这个问题是关于 angularJS 的。我还没有机会去看它,所以我在这里帮不上忙。祝你好运!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-06
相关资源
最近更新 更多