所以我正在使用非常漂亮的jQuery插件,Chosen; http://harvesthq.github.com/chosen/
我正在做的是以“或/或”方式使用两种选择的样式下拉菜单,即用户需要从一个或另一个中选择一个选项。
因此,当用户选择其中一个下拉列表时,另一个(通过javascript)将被设置回其默认的禁用值。
两个下拉列表都由一个隐藏参数支持,以实际保存所选值,无论它来自哪个下拉列表。这是通过在.chosen().change()
事件的两个下拉列表上都有听众来填充的。
唯一的问题是,当用户选择下拉列表中的第一个选项之一时,它似乎不会触发“更改”事件,我猜这似乎是已经选择的选项,因此不是“更改”。但是两个下拉列表实际的第一个选项(即在jsp中)都是一个禁用的选项,正常的“请选择”文本。
即使已选择所选的选项,是否有办法触发更改事件?或者即使没有发生变化,是否只会发生“选择”事件?
答案 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");
});