排序 select2 中的波兰字母
Polish letters in sorting select2
在@Rory McCrossan 的帮助下,设法创建了这样一个脚本来对 select 字段中的值进行排序。但是,仍然存在一个问题——对波兰语字符的支持。有没有可能也考虑进去?
代码:
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;
});
}
});
尝试使用 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());
});
在@Rory McCrossan 的帮助下,设法创建了这样一个脚本来对 select 字段中的值进行排序。但是,仍然存在一个问题——对波兰语字符的支持。有没有可能也考虑进去?
代码:
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;
});
}
});
尝试使用 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());
});