2014-11-19 2 views
1

테이블러 플러그인을 사용하고 있으며 hh : mm : ss 형식으로 정렬 할 열이 있습니다. 분류기 : '시간'이 작동하지 않습니다. 이 열을 정렬하는 방법이 있습니까? 감사테이블리스트 플러그인으로 시간 hh : mm : ss로 정렬

나는이처럼 시도했지만 그것은 콜 럼

ts.addParser({ 
id: "customDate", 
is: function(s) { 
    return false;   
}, 
format: function(s) { 
    s = s.replace(/:/g," "); 
    s = s.split(" "); 
    return $.tablesorter.formatFloat(new Date(s[0], s[1]-1, s[2]).getTime()+parseInt(s[3])); 
}, 
type: "numeric" 
를 정렬하지 않습니다

});

+0

가능한 [Jquery Tablesorter와 날짜 정렬 문제] (0120) (이 페이지는 자동으로 영어에서 번역되었습니다.) –

+0

나는 이것을 시도했지만 만들 수 없다. 작동 – user4199101

+0

int로 시간을 파싱하지 않고 정렬하는 이유는 무엇입니까 ??? – HoangHieu

답변

1

이미 tablesorter에 내장 된 시간 분석기가 있지만 "AM"또는 "PM"을 찾습니다.

하지만 타이머 시간 (hh:mm:ss 또는 그 이름이 무엇이든)을 사용하여 정렬해야하는 것처럼 보입니다.

다음 파서 코드는 약간 복잡하게 보이지만 열에는 초 (ss) 또는 분 (& 초 (mm:ss)) 만 포함하는 상황을 다루어야합니다. (maxDigits3 때) 파서는 기본적으로 일치하는 값을 유지하는 값에 선행 제로를 추가하기 때문에

maxDigits 설정이 필요하므로 10:30:40010030040된다. 어쨌든

, here is a demo :

$(function() { 

    // change maxDigits to 4, if values go > 999 
    // or to 5 for values > 9999, etc. 
    var maxDigits = 3; 

    $.tablesorter.addParser({ 
     id: "times", 
     is: function (s) { 
      return false; 
     }, 
     format: function (s) { 
      // prefix contains leading zeros that are tacked 
      var prefix = new Array(maxDigits + 1).join('0'), 
       // split time into blocks 
       blocks = s.split(/\s*:\s*/), 
       len = blocks.length, 
       result = []; 
      // add values in reverse, so if there is only one block 
      // (e.g. "10"), then it would be the time in seconds 
      while (len) { 
       result.push((prefix + (blocks[--len] || 0)).slice(-maxDigits)); 
      } 
      // reverse the results and join them 
      return result.length ? result.reverse().join('') : s; 
     }, 
     type: "text" 
    }); 

    $('table').tablesorter({ 
     theme: 'blue', 
     headers: { 
      3: { 
       sorter: 'times' 
      } 
     } 
    }); 
}); 

나는이 당신에게 중요한 있는지 확실하지 않습니다 만, (예를 들어 10y 30d 6h 10m) 시대 이후에 레이블을 추가 할 수 있습니다 사용할 수있는 "시간"파서도있다 - this demo를 참조하십시오

관련 문제