2016-04-22 52 views
1

我有一個使用globalize.js進行全球化的網絡應用程序。我試圖對使用以下格式的列進行排序:「22,22」(en-US)或「Terça-Feira,22」(pt-BR)。如何使用dataTable和jQuery進行國際化排序「星期幾,日」格式?

我用這個代碼塊進行測試:

jQuery.extend(jQuery.fn.dataTableExt.oSort, { 
    "weekdays-sort-pre": function (a) { 
     return a.replace(/^.+,/, ""); 
    }, 

    "weekdays-sort-desc": function (a, b) { 
     return ((a < b) ? -1 : ((a > b) ? 1 : 0)); 
    }, 

    "weekdays-sort-desc": function (a, b) { 
     return ((a < b) ? 1 : ((a > b) ? -1 : 0)); 
    } 
}); 

但它沒有正確排序。其實,我得到的結果,你可以在這裏看到:

Screen example

有誰知道怎麼不理第一部分(星期),並且只使用數字排序?

結果我想:

Sunday, 24 
Friday, 29 
Saturday, 30 

回答

1

排序插件有兩個主要問題:

  1. 它有兩個desc實現
  2. 不退還的實際number

這是一個改進版本

jQuery.extend(jQuery.fn.dataTableExt.oSort, { 
    "weekdays-sort-pre": function (a) { 
     return parseInt(a.replace(/^.+,/, "")) //return number 
    }, 
    "weekdays-sort-desc": function (a, b) { 
     return ((a < b) ? -1 : ((a > b) ? 1 : 0)); 
    }, 
    "weekdays-sort-asc": function (a, b) {  //implement asc 
     return ((a < b) ? 1 : ((a > b) ? -1 : 0)); 
    } 
}); 

而且你必須,當然實際使用的插件(沒有完全從問題明確):

var table = $('#example').DataTable({ 
    columnDefs: [ 
    { targets: [0], type: 'weekdays-sort'} 
    ] 
}) 

演示 - >http://jsfiddle.net/kjjsdumc/

國際化部分是多餘的,因爲所有你需要的是從一個字符串中提取一個數字。

+0

非常感謝。除了你給我的東西,我不得不更新插件。我現在明白了。 –