jQuery Chosen插件 - 第一个选项不会触发更改事件?

时间:2012-10-12 10:06:26

标签: javascript jquery jquery-chosen

所以我正在使用非常漂亮的jQuery插件,Chosen; http://harvesthq.github.com/chosen/

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

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

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

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

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

4 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分: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();

简而言之,您的选择难以重新选择。可能有一种比这更简单的方法,但这对我有用。

答案 2 :(得分:0)

我使用Select2插件时遇到了同样的问题(重新制作Chosen插件)。

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

$('#selectLabelMap').select2({
                   placeholder: "Sélectionner un label",                 
                   allowClear: true    // <=  don't forget "allowClear: true (re-init the comboBox)
               }        

答案 3 :(得分:0)

(DOM)准备就绪时首次触发更改。

    jQuery(function ($) {

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

    });