2014-02-10 167 views
3

我正在開發一個帶有多選參數的窗體。我使用Select2庫。jQuery-select2 - 按照它們被選擇的順序獲取值

$(".chosen-select").select2({ 
      allow_single_deselect: true, 
      width: "150px" 
     }); 
...... 
<select id="ship2" class="chosen-select" data-placeholder="Select vessel"> 
<option></option> 
<option value="value1">title1</option> 
<option value="value2">title2</option> 
</select> 

的問題是,當我試圖讓選定的值按它們在<select>元素中指定的順序返回,而不是爲了他們已經選擇:

var selectedDayPorts = $('#ship2'); 
var dayPorts = selectedDayPorts.select2("val"); 

是否有辦法讓他們按正確的順序?

回答

0

我沒有找到辦法如何讓選擇2到存儲在正確的順序值,所以我結束了創建隱藏每個select2字段的輸入字段,並相應地更新它,因爲我添加/刪除新值

+1

您能分享您的解決方案嗎?謝謝 –

+0

即使沒有人可以看到工作答案,如何選擇此選項... –

0

您可以使用:

var dayPorts = selectedDayPorts.select2("data"); 

而得到的值:

alert(dayPorts[0]['id']); 

alert(dayPorts[0]['text']); 
0

有時這可能是一個幫助。在嘗試了幾種方法之後,我想出了一個解決方法,使用我在用戶shashilo中通過此鏈接獲得的代碼。 https://github.com/select2/select2/issues/3106

但是我不得不做很少的安排,因爲它對我的情況沒有100%的效果。 這是我的代碼。

$(".select2").on("select2:select", function (evt) { 
 
      var element = evt.params.data.element; 
 
      var $element = $(element); 
 

 
      if ($(this).find(":selected").length > 1) { 
 
      var $second = $(this).find(":selected").eq(-1); 
 
      $second.after($element); 
 
      } else { 
 
      $element.detach(); 
 
      $(this).prepend($element); 
 
      } 
 

 
      $(this).trigger("change"); 
 
     });

在他提到

var $second = $(this).find(":selected").eq(-2);

但什麼工作,我的聯繫是

var $second = $(this).find(":selected").eq(-1);

而這種運作良好,即使在我的情況也取消項目。

相關問題