9
votes

Trier Sélectionner le menu alphabétiquement?

J'ai le menu Select suivant ( jsfiddle ): XXX

Utilisation de JavaScript, comment puis-je résoudre la liste alphabétiquement, à l'exclusion des 2 premières options ( voitures et ------- ), qui doit rester en haut? Merci d'avance pour toute aide.


1 commentaires

En ce qui concerne l'affichage d'une position dans la liste CODE> code> à un tableau. Cependant, cela ne fonctionne pas dans Internet Explorer 8 et plus bas, je l'ai donc changé pour extraire, trier et ensuite réinsérer:

var sel = document.getElementsByTagName("select")[0],
    opts = [];

// Extract the elements into an array
for (var i=sel.options.length-1; i >= 2; i--)
    opts.push(sel.removeChild(sel.options[i]));

// Sort them
opts.sort(function (a, b) { 
    return a.innerHTML.localeCompare(b.innerHTML);
});

// Put them back into the <select>
while(opts.length)
    sel.appendChild(opts.shift());


0 commentaires

2
votes

Ceci est juste un répondeur plus générique basé sur @jeff Parker's One!

function sortSelect(select, startAt) {
    if(typeof startAt === 'undefined') {
        startAt = 0;
    }

    var texts = [];

    for(var i = startAt; i < select.length; i++) {
        texts[i] = [
            select.options[i].text.toUpperCase(),
            select.options[i].text,
            select.options[i].value
        ].join('|');
    }

    texts.sort();

    texts.forEach(function(text, index) {
        var parts = text.split('|');

        select.options[startAt + index].text = parts[1];
        select.options[startAt + index].value = parts[2];
    });
}


1 commentaires

Ceci échoue si la valeur de