문제

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와 결합 하시겠습니까?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top