これは私のJSです。ソートはhh:mm a形式の時間です。私はそれを実行するとエラーが表示されます:oSort [(sDataType?sDataType: "string")+ " - " + aaSort [i] [1]]は関数ではありません私は列のデフォルトでソートしようとしています私はその並べ替えを宣言します。最初の2つまたは最後の列のソートは機能しますが、他の列のいずれかにデフォルト設定しようとすると気に入らなくなります。 DataTableは、sDataTypeが初期化中にこれらの列の内容を把握するのに苦労しているようです。これを投稿することはほとんど恥ずかしいaaSortingはaoColumnsを使用して定義されたカスタムソートを認識できません
<script type="text/javascript">
$(document).ready(function() {
$('#example').dataTable({
"bJQueryUI": true,
"iDisplayLength": 50,
"aoColumns": [
null,
null,
{ "sType": 'string-case' },
{ "sType": 'string-case' },
{ "sType": 'string-case' },
{ "sType": 'string-case' },
null
],
"aaSorting": [[ 2, 'desc']]
});
});
function getTimeValue(x) {
var time = x.match(/(\d+)(?::(\d\d))?\s*(P?)/);
var h = parseInt(time[1],10) + (time[3] ? 12 : 0);
if(!time[3] && parseInt(time[1],10)==12) h = 0;
if(time[3] && parseInt(time[1],10)==12) h = 12;
return h * 60 + (parseInt(time[2],10) || 0);
}
/* Define two custom functions (asc and desc) for string sorting */
jQuery.fn.dataTableExt.oSort['string-case-asc'] = function(x,y) {
x = getTimeValue(x);
y = getTimeValue(y);
return ((x < y) ? -1 : ((x > y) ? 1 : 0));
};
jQuery.fn.dataTableExt.oSort['string-case-desc'] = function(x,y) {
x = getTimeValue(x);
y = getTimeValue(y);
return ((x < y) ? 1 : ((x > y) ? -1 : 0));
};