Le résultat de la sélection multiple sélectionné est toujours classé dans l'ordre croissant du tableau, quel que soit l'ordre sélectionné. Je n'ai pas pu trouver d'informations relatives à la commande dans le tableau d'attributs JHtml.
J'ai besoin de la sortie pour trier tel que sélectionné par l'utilisateur. Exemple:
<select id="items" name="items" size="2" multiple>
<option value="tomato">Tomato</option>
<option value="meat">Meat</option>
<option value="cheese">Cheese</option>
</select>
Lorsque les valeurs sont générées à l'aide de la méthode suivante
$("#items").val();
La commande retournée est tomate, viande, fromage bien que le fromage ait été sélectionné en premier.
Existe-t-il un paramètre de classement, similaire à l'exemple suivant, qui renvoie la sortie dans l'ordre de sélection?
JHtml::_('formbehavior.chosen', 'select', null, ['set_order' => 'order']);
Solution de travail utilisée.
Inclus dans jQuery Select2 3.5.4, qui est similaire à jQuery Chosen, c’est donc un peu excessif, mais cela a fonctionné. https://github.com/select2/select2/releases/tag/3.5.4
Fonction de traitement du tri par glisser-déposer par utilisateur anonyme https://stackoverflow.com/questions/25344372/select2-with-drag-and-drop-sorting
// load jQuery libraries
JHtml::_('jquery.framework');
JHtml::_('jquery.ui', array('core', 'sortable'));
JHtml::_('behavior.multiselect');
// load select2 files
JFactory::getDocument()->addStyleSheet(Juri::root(true).'/assets/select2.css');
JFactory::getDocument()->addScript(Juri::root(true).'/assets/select2.js');
// script intialize
JFactory::getDocument()->addScriptDeclaration("
jQuery(function ($) {
$.fn.extend({
select2sortable: function(){
var select = $(this);
$(select).select2({width: 220});
var ul = $(select).prev('.select2-container').first('ul');
ul.sortable({
placeholder : 'ui-state-highlight',
forcePlaceholderSize: true,
items : 'li:not(.select2-search-field)',
tolerance : 'pointer',
stop: function() {
$($(ul).find('.select2-search-choice').get().reverse()).each(function() {
var id = $(this).data('select2Data').id;
var option = select.find('option[value=\"' + id + '\"]')[0];
$(select).prepend(option);
});
}
});
}
});
});
// ID of multiple select field append to function
$('#selectorder').select2sortable();
");
<select id="selectorder" size="2" multiple="multiple">
<option value="item1">Item 1</option>
<option value="item2">Item 2</option>
</select>