var ccArray = [];
ccArray = $("input:checkbox[name='multiselect_ddlCC']").sort();
配列に必要な値を取得していることはわかりますが、sort() の実行後、配列の順序は変更されますが、アルファベット順ではありません。ENG、ATL、NAS、CLT、BIM などを取得します。
何か案は?
var ccArray = [];
ccArray = $("input:checkbox[name='multiselect_ddlCC']").sort();
配列に必要な値を取得していることはわかりますが、sort() の実行後、配列の順序は変更されますが、アルファベット順ではありません。ENG、ATL、NAS、CLT、BIM などを取得します。
何か案は?
DOM 要素を並べ替えて、再度追加する必要があります。
var $els = $("input:checkbox[name='multiselect_ddlCC']");
var $sorted = $($els.toArray().sort(function(a, b) {
return a.value > b.value;
}));
$els.replaceWith($sorted);
編集:テストreplaceWith
したところ、うまくいきませんでした。これはうまくいきます:
$els.each(function(i) {
$(this).after($sorted.eq(i));
});
入力値を実際に比較する必要があります。これらは文字列であるため、使用する必要がある<
か>
、減算が適切に機能しません。
.sort(function (a, b) {
if ($(a).val() < $(b).val()) {
return -1;
}
else {
return 1;
}
});
文字列ではなく、jQuery でラップされた HTML 要素を並べ替えています。ソートされた順序で、それらのどれが別の前に来るか誰が知っていますか?
それはうまくいくはずです:
jQuery.map(ccArray, function(item) { return item.value }).sort()
また、選択したチェックボックスの値を並べ替えたリストが必要な場合は、次のようにします。
var values = [];
$('input:checkbox[name='multiselect_ddlCC']:checked').each(function(i,e){
values.push(e.value);
});
var sortedValues = values.sort();
要素自体ではなく、.val() を使用して値を並べ替える必要があります。
var ccArray = [];
ccArray = $("input:checkbox[name='multiselect_ddlCC']").val().sort();