小编典典

如何使用 JqGrid 更改 select2 下拉列表的选定值?

all

我正在使用 Oleg 的select2 demo,但我想知道是否可以更改下拉菜单中当前选择的值。

例如,如果加载的四个值是:"Any", "Fruit", "Vegetable", "Meat"并且下拉列表默认为"Any",我将如何"Fruit"在 JqGrid 事件中将其更改为loadComplete

这可能吗?


阅读 64

收藏
2022-08-02

共1个答案

小编典典

对于 select2 版本 >= 4.0.0

其他解决方案可能不起作用,但是以下示例应该起作用。

方案一:触发所有附加的变更事件,包括select2

$('select').val('1').trigger('change');

解决方案 2:导致触发 JUST select2 更改事件

$('select').val('1').trigger('change.select2');

有关这些示例,请参见此 jsfiddle。感谢 @minlare 的解决方案 2。

解释:

假设我有一个最好的朋友,用人们的名字选择。所以 Bob、Bill 和 John(在此示例中,我假设 Value 与名称相同)。首先,我在我的选择上初始化
select2:

$('#my-best-friend').select2();

现在我在浏览器中手动选择 Bob。接下来鲍勃做了一些淘气的事,我不再喜欢他了。所以系统为我取消选择 Bob:

$('#my-best-friend').val('').trigger('change');

或者说我让系统选择列表中的下一个而不是 Bob:

// I have assume you can write code to select the next guy in the list
$('#my-best-friend').val('Bill').trigger('change');

Select 2
网站上的注释(请参阅已弃用和删除的方法)可能对其他人有用:

.select2(‘val’) “val” 方法已被弃用,将在 Select2 4.1 中删除。已弃用的方法不再包含 triggerChange
参数。

您应该直接在基础元素上调用 .val 。如果您需要第二个参数 (triggerChange),您还应该在元素上调用 .trigger(“change”)。

$('select').val('1').trigger('change'); // instead of $('select').select2('val', '1');
2022-08-02