28

Chosen の複数選択を使用しています。ユーザーが選択した注文を追跡できるようにしたい。たとえば、ユーザーが最初にオプション 2 を選択してからオプション 1 を選択した場合、オプション 2、オプション 1 の順序で結果を取得したいと考えています。しかし、選択されたソートは、ユーザーが選択したオプションをソートします。結果をソートしないことを選択したことを伝える方法はありますか?

4

7 に答える 7

13

Chosen と一緒に使用する簡単なプラグインを作成しました。Chosen の複数選択要素の選択順序を取得したり、順序付けられた値の配列から設定したりできます。

Github で入手できます: https://github.com/tristanjahier/chosen-order

Chosen 1.0+ と互換性があり、jQuery と Prototype の両方のバージョンと互換性があります。フレームワークごとにプラグインもあり、次のようなことができます。

選択順序を取得する

var selection = $('#my-list').getSelectionOrder();

選択した値を順番に設定する

var order = ['nioup', 'plop', 'fianle']; // Ordered options values
$('#my-list').setSelectionOrder(order);

見てみな。

于 2014-07-22T17:35:31.563 に答える
4

https://github.com/mrhenry/jquery-chosen-sortable/プラグインが利用可能になりました。これは、選択した v1 の仕事をします。

selected の新しいバージョンでは、github JS ファイルで chzn- を selected- に置き換える必要があります。

使用するには、次のコードを使用します。

jQuery('#myselect').addClass('chosen-sortable').chosenSortable();

これは非常にうまく機能しますが、選択した要素がロードされた後にフィールドを再度編集して要素を並べ替える場合は、さらにコードが必要になります。

これには以下を使用します。sortedElements と $select = jQuery('#myselect') のリストが与えられた場合:

var $container = $select.siblings('.chosen-container')
var $list = $container.find('.chosen-choices');

// Reverse the list, as we want to prepend our elements.
var sortedElements = sortedElements.reverse();

for (var i = 0; i < sortedElements.length; i++) {
  var value = sortedElements[i];

  // Find the index of the element.
  var index = $select.find('option[value="' + value + '"]').index();

  // Sort the item first.
  $list
          .find('a.search-choice-close[data-option-array-index="' + index + '"]')
          .parent()
          .remove()
          .prependTo($list);
}

これはここで非常にうまく機能します。

于 2013-12-08T16:50:07.667 に答える
3

手遅れでない場合は、Select2を使用することをお勧めします。見た目は Chosen と同じですが、API とドキュメントがより優れています。

select2だと【テストされていないコード】のようになります

 var results = [];
 $("#e11").on("change", function(e) { 
    results.push(e.val)
 })
于 2012-12-13T19:35:51.310 に答える