使用jQuery更改Chosen.js选择框的值

问题描述:

我试图更改具有Chosen.js叠加层的选择框的值。这个想法是当用户点击一个按钮时改变选定的值。使用jQuery更改Chosen.js选择框的值

通过定期的选择框,我可以做更改值:

$('#GroupsShowNext').unbind("click").click(function() { 
    var index = $("#GroupsViewGroups").prop("selectedIndex"); 
    index += 1; 

    $('#GroupsViewGroups option').eq(index).attr('selected', 'selected'); 
    $('#GroupsViewGroups').change(); 
}); 

但随着Chosen.js它不工作anymore..I试过几件事,但没有奏效。任何想法如何得到它的工作?

Fiddle

+0

[在选择改变选择与所选择的插件(可能重复http://stackoverflow.com/questions/8980131/changing-selection-in-a-select-与选择插件) – 2014-04-11 05:03:34

所以张贴这个问题,我继续尝试着去解决这个问题,碰巧发现了一个办法做到这一点了。

$('#GroupsShowNext').unbind("click").click(function() { 
    var index = $("#GroupsViewGroups").prop("selectedIndex"); 
    index += 1; 
    $('#GroupsViewGroups option').eq(index).attr('selected', 'selected'); 
    $('#GroupsViewGroups').chosen().change(); 
    $("#GroupsViewGroups").trigger("liszt:updated"); 
}); 

关键是把.chosen()放在.change()之前,然后触发“liszt:updated”。它的工作原理,但我不知道这是否是做到这一点的最好办法..

如果你有更好的方法来做到这一点,请让我知道

+0

你也可以看到@LuizCarlosLucena关于也可以使用“选择:更新”的答案 – 2014-04-16 08:05:05

+0

选择:更新用于最新版本,用于legecy版本使用liszt:更新 – 2015-01-24 08:06:42

我偶然发现了这个试图弄明白我。

我能够不断变化的原始字段选择索引,然后触发该字段的liszt:updated事件的组合来做到这一点:

$('#GroupsViewGroups')[0].selectedIndex = $('#GroupsViewGroups')[0].selectedIndex + 1; 
$('#GroupsViewGroups').trigger('liszt:updated'); 

使用插件Chosen.js它的工作原理。

var myIndex = 4; 

$("select#GroupsViewGroups").prop('selectedIndex', myIndex); 

只是一个更新(我发现从谷歌这个页面,也许其他人会发现它也)

我tryed作出评论@ splitz的答案,但我不能,因为我仍不很没有足够的声誉。

做新的方法是:

$('#GroupsShowNext').unbind("click").click(function() { 
    var index = $("#GroupsViewGroups").prop("selectedIndex"); 
    index += 1; 
    $('#GroupsViewGroups option').eq(index).attr('selected', 'selected'); 
    $("#GroupsViewGroups").trigger("chosen:updated"); 
}); 

现在,问题是 “选择:更新”。

更新答案发现:Changing selection in a select with the Chosen plugin