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

Javascript jQuery选择的插件-第一个选项不会触发更改事件?,javascript,jquery,jquery-chosen,Javascript,Jquery,Jquery Chosen,所以我使用了非常好的jQuery插件,selected 我所做的实际上是以“非此即彼”的方式处理两个选择的样式下拉列表,即用户需要从一个或另一个中选择一个选项 因此,当用户选择其中一个下拉列表时,通过javascript的另一个下拉列表将被设置回其默认禁用值 这两个下拉列表都由一个隐藏参数支持,以实际保存选定的值,无论它来自哪个下拉列表。这是通过在.selected.change事件的两个下拉列表上都有侦听器来填充的 唯一的问题是,当用户在任一下拉列表中选择第一个选项时,它似乎不会触发更改事件,

所以我使用了非常好的jQuery插件,selected

我所做的实际上是以“非此即彼”的方式处理两个选择的样式下拉列表,即用户需要从一个或另一个中选择一个选项

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

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

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


即使已选择所选选项,是否有方法触发更改事件?还是只有一个即使没有更改也会触发的select事件?

您可以在jquery对象上使用.triggerchange或.change手动触发更改事件。

这对我很有效:

//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();

简而言之,您正在为您的select重置select。可能有比这更简单的方法,但这对我来说很有效。

我只是在使用Select2插件重新制作所选插件时遇到了同样的问题

当我将组合框声明为select2时,我忘记了allowClear:true这一行

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

在DOM就绪时第一次触发更改

    jQuery(function ($) {

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

    });

问题是,所选择的插件隐藏了很多。正常的选择对象并没有实际显示,它自己生成。但是,当我使用“选择”时,我仍然可以触发实际选择对象上的事件。你能显示你的代码吗?他说的是添加$'selectId'。在更改值后更改你的选择,以手动调用更改事件。不过我也犯了同样的错误。我正在使用jquery.val更改select的值。当我这样做,然后选择第一个选项时,它不会触发更改事件。如果我选择任何其他选项,尽管它将触发更改事件,如果我选择任何其他选项,然后选择第一个选项,它将触发更改事件。我认为手动设置.val不是很有效。如果我不使用select进行选择,它会起作用。希望这能帮助任何人解决这个问题。