JQuery Tablesterter를 사용하여 MM/YY 날짜를 정렬합니다
-
19-08-2019 - |
문제
jQuery Tablesorter 플러그인을 사용하여 테이블을 정렬하고 있습니다. 내 테이블의 열에있는 열에는 날짜가 mm/yy 형식으로 표시됩니다.
<tr>
<td class="col-name">...</td>
...
<td rel="2000" class="col-dob">10/00</td>
...
</tr>
<tr>
<td class="col-name">...</td>
...
<td rel="1986" class="col-dob">11/86</td>
...
</tr>
메모:
- 각 셀에는 고유 한 수업이 있습니다
- 날짜는 MM/YY 형식으로 표시됩니다
- 날짜가있는 셀도 연도를받습니다
내 jQuery 코드는 다음과 같습니다.
// add parser through the tablesorter addParser method
$.tablesorter.addParser({
// set a unique id
id: 'user-birthdate',
is: function(s) {
// return false so this parser is not auto detected
return false;
},
format: function(s) {
// format your data for normalization
var dateSplit = s.split('/');
if(2 !== dateSplit.length)
return 0;
return new Date(dateSplit[1], dateSplit[0], 1);
},
// set type, either numeric or text
type: 'numeric'
});
myClass.init = function() {
$('.module .user table').tablesorter({
sortList: [[0,0]],
widgets: ['zebra'],
headers: {
5: {
sorter:'user-birthdate'
}
}
});
}
myClass.init();
내 문제는 테이블 러가 00을 2000 년 대신 1900 년으로 해석하므로 정렬 된 데이터가 정확하지 않다는 것입니다.
어떤 실마리에 어떻게 해결할 수 있습니까? jQuery 1.2.6과 최신 버전의 Tables 내가 사용하고 있습니다.
해결책
Tablesterter 문서는 종종 도움이되지 않습니다. 그것 외모 많이 말하지만 세부 사항은 부족합니다.
이 경우 파서의 기능 서명을 알려주지 않습니다. 다행히도 읽을 수 있습니다 미확인 코드 그것을 찾으려면.
거기에서 우리는 그것을 발견했다 metadata
Parser는 다음을 수행합니다.
format: function(s,table,cell) {
즉, 형식 방법을 다음과 같이 조정할 수 있습니다.
format: function(s, table, cell) {
// format your data for normalization
var dateSplit = s.split('/');
var year = $(cell).attr('rel');
if(2 !== dateSplit.length)
return 0;
return new Date(year, dateSplit[0], 1);
},
또는 적어도 그것과 비슷합니다. 나는 실제로 이것을 테스트하지 않았다. 그러나 적어도 매우 가까워야합니다.
다른 팁
나는 당신의 문제가 날짜 생성자이고 당신이 분비하지 않고 지나가는 2 자리 연도 문자열이라는 것을 알게 될 것입니다. new Date(dateSplit[1], dateSplit[0], 1);
파서의 S를 기준으로 REL에 쉽게 액세스 할 수 있다고 생각하지 않습니다. S는 셀의 전체 내용을 포함합니까? 셀의 데이터에서 다음과 같이 무언가를 할 수 있습니까? <span style="display : none">CC</span>MM/YY
, 태그를 제거한 다음 구문 분석에서 CC를 YY와 결합 하시겠습니까?