多选Jquery插件问题

时间:2018-07-05 09:20:53

标签: javascript jquery html

我正在使用选择的jquery库。选择的值存储在数组中,然后稍后再次加载。加载的值正确,但是选择顺序不正确。
例如,如果我选择option3,然后选择option2,则重新加载时的顺序为option2,option3。
html:

<select id="second" data-placeholder="Choose a Country..." class="chosen-select" multiple style="width:350px;" tabindex="4">    
     <option value=""></option> 
     <option value="United States">United States</option>
     <option value="United Kingdom">United Kingdom</option> 
     <option value="Afghanistan">Afghanistan</option> 
     <option value="Albania">Albania</option> 
     <option value="Algeria">Algeria</option> 
     <option value="American Samoa">American Samoa</option> 
     <option value="Andorra">Andorra</option> 
     <option value="Angola">Angola</option> 
     <option value="Anguilla">Anguilla</option>
</select>

JavaScript:

$(".chosen-select").chosen();
var selectedOptions = [];
$('button').click(function(){
    //$(".chosen-select").val('').trigger("chosen:updated");
  $('#second_chosen ul li span').each(function(i, selected){
      selectedOptions[i] = $(selected).text();
  });
  //clear the selection
  $("#second").val("").trigger("chosen:updated");

});

$('#previousBtn').click(function(){
    console.log(selectedOptions);
    $("#second").val(selectedOptions).trigger("chosen:updated");
});


在selectedOptions数组中选择顺序是正确的,但是它以选项的顺序显示,而不是选择的顺序。
请找到jsfiddle:https://jsfiddle.net/Da4m3/1051/
知道如何解决这个问题吗?

3 个答案:

答案 0 :(得分:0)

我使用了 push()函数将值添加到 selectedOptions 数组

$('#second_chosen ul li span').each(function(i, selected){
    selectedOptions.push($(selected).text());
});

https://jsfiddle.net/Da4m3/1096/

答案 1 :(得分:0)

关键是,在select

中,数组中的条目未按相同顺序显示

答案 2 :(得分:0)

查看下面的链接是否有帮助。

Chosen: Keep Multiple Selection Order

https://github.com/tristanjahier/chosen-order

有一个您要问的插件。