Jquery 在不提交表单的情况下设置Select2的值

Jquery 在不提交表单的情况下设置Select2的值,jquery,select2,Jquery,Select2,我开始使用Select2替换我应用程序中的下拉列表。我的问题是如何适应现在的情况 我有一个包含fullcalendar组件的页面和3个下拉列表,可以选择要显示的日历。使用下拉列表后,其他两个将按如下方式重置(我使用jQuery): 这样做的主要优点是表单仅由“已更改”下拉列表提交(每个下拉列表都捕获了自己的更改事件,以重置其他下拉列表) 使用select2,如果我使用此选项,将启动重置下拉列表的更改事件: $('#dropdown1').select2('val','') 因此,所有的变革活动

我开始使用Select2替换我应用程序中的下拉列表。我的问题是如何适应现在的情况

我有一个包含fullcalendar组件的页面和3个下拉列表,可以选择要显示的日历。使用下拉列表后,其他两个将按如下方式重置(我使用jQuery):

这样做的主要优点是表单仅由“已更改”下拉列表提交(每个下拉列表都捕获了自己的更改事件,以重置其他下拉列表)

使用select2,如果我使用此选项,将启动重置下拉列表的更改事件:

$('#dropdown1').select2('val','')
因此,所有的变革活动都将启动

是否有任何解决方案可以在不启动更改事件的情况下设置select2下拉列表的值


感谢您

在版本4的文档中,您现在可以直接调用
val()
。从我所读的内容来看,这不会导致
onChange
,因为他们说您必须手动调用它

文档中的片段

$('select').val('US'); // Change the value or make some change to the internal state
$('select').trigger('change.select2'); // Notify only Select2 of changes

因此,我认为您应该跳过本例中的
触发器调用。

在版本4的文档中,您现在可以直接调用
val()
。从我所读的内容来看,这不会导致
onChange
,因为他们说您必须手动调用它

文档中的片段

$('select').val('US'); // Change the value or make some change to the internal state
$('select').trigger('change.select2'); // Notify only Select2 of changes

因此,我想您应该跳过您的案例中的
触发器调用。

您确定使用
$(“#dropdown1”)。select2('val','')
触发更改事件您使用的是什么版本?我使用的是使用v4.0.0的django-select2。@Reddy是的,当我更改dropdown2并重置dropdown1值时,打开('change')OnDropdown1被触发,因此这可能是API的默认行为,您可以做的是在更改事件中进行标志检查,并且当您手动更改值并且不希望更改事件执行时,只需使用标志从if检查中转义它即可。
$('#dropdown1')。选择2('val','')
触发更改事件您使用的是什么版本?我使用的是使用v4.0.0的django-select2。@是的,当我更改dropdown2并重置dropdown1值时,dropdown1上的on('change')被触发,这可能是API的默认行为,您可以做的是在更改事件中进行标记检查,当您手动更改值并且不希望更改事件执行时,只要从标记检查中退出即可。如果问题得到解决,我使用了您的答案,但我需要触发更改。选择2。我解释自己:$('select').val('US');=>仅为初始下拉列表$('select').trigger('change.select2')设置一个新值;=>仅触发对select2的更改以更改select2下拉列表的值。它不会触发整个页面的更改事件(因此,如果您像我一样有“onchange事件”捕获,它不会触发它),谢谢!问题解决了,我使用了您的答案,但我需要触发更改。选择2。我解释自己:$('select').val('US');=>仅为初始下拉列表$('select').trigger('change.select2')设置一个新值;=>仅触发对select2的更改以更改select2下拉列表的值。它不会触发整个页面的更改事件(因此,如果您像我一样有“onchange事件”捕获,它不会触发它),谢谢!