我從一些JSON填充幾個下拉列表,它現在按預期工作,但我試圖在下拉列表中排序值。對於我所有的下拉菜單,它工作正常,除了其中一個有數字,在這種情況下,它列出它的1,10,12,2。排序在一個下拉列表
任何想法如何我可以保持它按字母順序排序的一切,但獲得排序以處理數字值呢?
這裏是我的JS(這個複製的每個字段 - 也許應該嘗試找到一種方法,使這種可重複使用):
var populateGenres = _.map(data.genres, function (val) {
return '<option>' + val + '</option>';
}).join();
var target = '#genreField';
$('#genreField').html(populateGenres);
reArrangeSelect(target);
這裏的排序JS:
function reArrangeSelect(target) {
$(target).html($(target + " option").sort(function(a, b) {
return a.text == b.text ? 0 : a.text < b.text ? -1 : 1
}))
}
我的HTML是此格式:
<td>
<select id="genreField" class="form-control"></select>
</td>
<td>
<select id="authorField" class="form-control"></select>
</td>
這是否幫助? 「用數字和字母的字母排序數字」http://stackoverflow.com/questions/17996193/sort-numbers-with-letters-numerically-and-alphabetically – bloodyKnuckles
這裏爲您的下拉列表中的數字1,10,12,2聽起來像字符串不是整數。檢查所有數字是整數? – Shail
如果JSON是在服務器端生成的,我寧願花時間在服務器端排序,無論是在數據檢索本身還是在序列化JSON之前。客戶端方法不是很可靠,沒有提到它會導致頁面在速度較慢的計算機上凍結或使用較大的集合時凍結。 – JKurcik