3

@Rory McCrossan の助けを借りて、選択フィールドの値をソートするスクリプトを作成することができました。ただし、まだ問題があります - ポーランド語の文字のサポートです。また、考慮される可能性はありますか?

コード:

var dataUser = [{
    "id": "5",
    "text": "BTest"
}, {
    "id": "2",
    "text": "ATest"
}, {
    "id": "8",
    "text": "aTest"
}, {
    "id": "13",
    "text": "ŁTest"
}];

var dataUser2 = [{
    "id": "5",
    "text": "DBTest"
}, {
    "id": "2",
    "text": "FATest"
}];

$("#mylist").select2({
    data: dataUser,
    templateResult: function(data) {
        return data.text;
    },
    sorter: function(data) {
        return data.sort(function(a, b) {
            return a.text.toLowerCase() < b.text.toLowerCase() ? -1 : a.text.toLowerCase() > b.text.toLowerCase() ? 1 : 0;
        });
    }
}).on("select2:select", function(e) {
    var $container = $(this).next().find('.select2-selection__rendered');
    $container.find('li.select2-selection__choice').sort(function(a, b) {
        return $(a).text() < $(b).text() ? -1 : $(a).text() > $(b).text() ? 1 : 0;
    }).prependTo($container);
});

$("#mylist2").select2({
    data: dataUser2,
    templateResult: function(data) {
        return data.text;
    },
    sorter: function(data) {
        return data.sort(function(a, b) {
            return a.text.toLowerCase() < b.text.toLowerCase() ? -1 : a.text.toLowerCase() > b.text.toLowerCase() ? 1 : 0;
        });
    }
});

JSFIDDLE

4

1 に答える 1

3

< の代わりに String.localeCompare を使用してみてください: https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/String/localeCompareを参照してください。

sort(function(a, b) {
    return $(a).text().localeCompare($(b).text());
});
于 2016-01-26T16:46:04.890 に答える