2016-11-29 2 views
-1

С помощью следующего кода JQuery, чтобы заказать строки таблицы, цифры с точкой для тысяч форматировании не приказывать правильно:Jquery не может заказать номера с тысячами дота отделившегося заказа

Этих цифр:

+1,000, 2,500, 4,000, 850

упорядочены следующим образом:

850, 4.000, 2.500 , 1.000

Мне нужно заказать эти образцы без удаления точки.

код JQuery:

$('th').each(function (column) { 
    $(this).addClass('sortable').click(function() { 
     var findSortKey = function ($cell) { 
      return $cell.find('.sort-key').text().toUpperCase()+ ' ' + $cell.text().toUpperCase(); 

     }; 
     var sortDirection = $(this).is('.sorted-asc') ? -1 : 1; 
     var $rows = $(this).parent().parent().parent().find('tbody tr').get(); 
     var bob = 0; 
     // Loop through all records and find 
     $.each($rows, function (index, row) { 
      row.sortKey = findSortKey($(row).children('td').eq(column)); 
     }); 

     // Compare and sort the rows alphabetically or numerically 
     $rows.sort(function (a, b) { 
      if (a.sortKey.indexOf('-') == -1 && (!isNaN(a.sortKey) && !isNaN(a.sortKey))) { 
       // Rough Numeracy check 

        if (parseInt(a.sortKey) < parseInt(b.sortKey)) { 
         return -sortDirection; 
        } 
        if (parseInt(a.sortKey) > parseInt(b.sortKey)) { 
         return sortDirection; 
        } 

      } else { 
       if (a.sortKey < b.sortKey) { 
        return -sortDirection; 
       } 
       if (a.sortKey > b.sortKey) { 
        return sortDirection; 
       } 
      } 
      return 0; 
     }); 

     // Add the rows in the correct order to the bottom of the table 
     $.each($rows, function (index, row) { 
      $('tbody').append(row); 
      row.sortKey = null; 
     }); 

     // Identify the column sort order 
     $('th').removeClass('sorted-asc sorted-desc'); 
     var $sortHead = $('th').filter(':nth-child(' + (column + 1) + ')'); 
     sortDirection == 1 ? $sortHead.addClass('sorted-asc') : $sortHead.addClass('sorted-desc'); 

     // Identify the column to be sorted by 
     $('td').removeClass('sorted').filter(':nth-child(' + (column + 1) + ')').addClass('sorted'); 
    }); 
}); 
+3

Th почему вы *** никогда не сортируете по форматированным или локализованным датам, цифрам и т. д. – connexo

+0

Очевидно, что '1.000' меньше, чем' 850'. –

+0

@PraveenKumar Вопрос, который вы отмечаете как дублирующийся, касается DataTables. Это настраиваемая функция, а не плагин. Это решение не соответствует моим требованиям. – user3472675

ответ

0

На JavaScript есть не разделитель для тысяч номеров. только для десятичного и это .

С точкой сепаратором вы не можете определить свой номер переменным, как Int или float, потому что это будет рассматриваться как десятичное число и удалить ноль после запятой.

Вы по-прежнему можете сортировать свой номер с точкой.

  • Заменить точку на пустое значение ("")
  • Сортировка Yours чисел
  • И добавить точечный разделитель в виде строки

Пожалуйста, попробуйте:

var numbers = ["4.500", "1.000", "1", "5", "25", "10"]; 
 
var num = []; 
 

 
$.each(numbers,function(i,e){ 
 
    dotPos = numbers[i].replace(/\./g,"") 
 
    num.push(parseInt(dotPos)) 
 
}) 
 
num.sort(function(a, b){return a-b}); 
 
$.each(num,function(i,e){ 
 
    console.log(num[i].toString().replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1.")) 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>