web-dev-qa-db-fra.com

Existe-t-il une méthode pour trier la sortie FormBehavior.chosen dans Joomla 3?

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']);
1
Nadal

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>

Result

1
Nadal