Chosen の複数選択を使用しています。ユーザーが選択した注文を追跡できるようにしたい。たとえば、ユーザーが最初にオプション 2 を選択してからオプション 1 を選択した場合、オプション 2、オプション 1 の順序で結果を取得したいと考えています。しかし、選択されたソートは、ユーザーが選択したオプションをソートします。結果をソートしないことを選択したことを伝える方法はありますか?
7 に答える
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);
見てみな。
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);
}
これはここで非常にうまく機能します。
手遅れでない場合は、Select2を使用することをお勧めします。見た目は Chosen と同じですが、API とドキュメントがより優れています。
select2だと【テストされていないコード】のようになります
var results = [];
$("#e11").on("change", function(e) {
results.push(e.val)
})