2

所以我使用了相当不错的 jQuery 插件 Chosen;http://harvesthq.github.com/chosen/

我正在做的实际上是以“非此即彼”的方式使用两个选择样式的下拉菜单,即用户需要从一个或另一个中选择一个选项。

因此,当用户选择其中一个下拉菜单时,另一个(通过 javascript)将设置回其默认禁用值。

两个下拉菜单都由一个隐藏参数支持,以实际保存所选值,无论它来自哪个下拉菜单。.chosen().change()这是通过在事件的两个下拉列表中都有侦听器来填充的。

唯一的问题是,当用户在任一下拉列表中选择第一个选项之一时,它似乎不会触发“更改”事件,我猜因为这似乎是已选择的选项,因此不是“更改”。但是两个下拉菜单的实际第一个选项(即在 jsp 中)是一个禁用选项,带有正常的“请选择”文本。

即使已经选择了所选选项,是否有办法触发更改事件?或者是否只有一个“选择”事件即使没有发生变化也会触发?

4

4 回答 4

2

您可以在 jquery 对象上使用 .trigger("change") 或 .change() 来手动触发更改事件。

于 2012-10-12T10:30:59.623 回答
0

这对我有用:

//Get the dynamic id given to your select by Chosen
var selId = $('your_select').attr('id');
//Use that id to remove the dynamically created div (the foe select box Chosen creates)
$('#'+ selId +'_chzn').remove();
//Change the value of your select, trigger the change event, remove the chzn-done class, and restart chosen for that select
$('#'+selId).val('your_new_value').change().removeClass('chzn-done').chosen();

简而言之,您正在为您的选择选择硬重置。可能有比这更简单的方法,但这对我有用。

于 2012-11-01T15:21:59.573 回答
0

我只是在使用 Select2 插件(重制选择插件)时遇到了同样的问题。

当我将 Combobox 声明为 select2 时,我忘记了“allowClear: true”这一行。

$('#selectLabelMap').select2({
                   placeholder: "Sélectionner un label",                 
                   allowClear: true    // <=  don't forget "allowClear: true (re-init the comboBox)
               }        
于 2015-10-22T09:27:04.490 回答
0

当(DOM)准备好时第一次触发更改。

    jQuery(function ($) {

        $('#myselect').trigger("change");   

    });
于 2016-09-29T11:50:01.943 回答