2012-03-12 51 views
13

我試圖更改具有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

回答

24

所以張貼這個問題,我繼續嘗試着去解決這個問題,碰巧發現了一個辦法做到這一點了。

$('#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

8

我偶然發現了這個試圖弄明白我。

我能夠不斷變化的原始字段選擇索引,然後觸發該字段的liszt:updated事件的組合來做到這一點:

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

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

var myIndex = 4; 

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

只是一個更新(我發現從谷歌這個頁面,也許其他人會發現它也)

我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