문제

여기 내 문제가 있습니다.

현재 jQuery 테이블 분류기를 사용하고 있으며 웹에서 쉼표 자리 파서를 찾았습니다. 내가 가진 문제는 그것이 작동하지 않는 것 같습니다.

따라서 열이 다음과 같이 정렬됩니다.

  1. 4,666
  2. 141,666
  3. 293
  4. 341,666
  5. 346
  6. 461,676

이것은 다음과 같이 정렬해야합니다

  1. 293
  2. 346
  3. 4,666
  4. 141,666
  5. 341,666
  6. 461,676

내가 사용하고있는 구문 분석기는 다음과 같습니다.

$( function() { 

    $.tablesorter.addParser({
        id: "fancyNumber",
        is: function(s) {
            return /^[0-9]?[0-9,\.]*$/.test(s);
        },
        format: function(s) {
            return $.tablesorter.formatFloat(s.replace(/,/g, ''));
        },
        type: "numeric"
    });
}); 

난 그냥 내가 잘못하고 있는지 모르겠어. 내가 잘못로드하고 있습니까? 파서가 틀렸습니까? 나는 여기서 진정한 도움이 필요하고 지금이 문제로 인해 한동안 어려움을 겪고 있습니다.

편집하다: 열을 생성하는 방법과 사용자가 선택할 수있는 열을 선택할 수 있으므로 어떤 헤더가 있는지 알 수 없습니다. 여기에 명시된대로 클래스 = "{Soplynumber : 'FancyNumber'}"명령을 사용해 보았습니다. http://tablesorter.com/docs/example-meta-parsers.html

** 편집 : ** 열 중 하나가 올바르게 작동하는 것처럼 보이지만이 열에 여전히 문제가 있습니다. 어쩌면 숫자와 쉼표 분리 숫자가 있기 때문에?

도움이 되었습니까?

해결책

이 질문을 접하는 사람이라면 누구나. 헤더 행에 클래스를 추가해야했습니다. 그래서 내가 공상하고 싶었던 모든 헤더의 경우이 수업을 추가했습니다.

<th class=\"{sorter: 'fancyNumber'}\">

이것은 기본적으로 분류기를 켜서 멋지게 작동했습니다.

내 방식대로 내 오류를 깨닫게 된 것은 디버거를 그렇게 켜는 것입니다.

$("#tblInfo").tablesorter({debug:true, widgets: ['zebra'], widgetZebra: { css: ['d0', 'd1']} });

다른 팁

메타 데이터 플러그인을 포함하는 것을 잊어 버린 경우에도 발생할 수 있습니다.

** Google의 첫 번째 검색 결과이기 때문에 여기에 게시되었습니다.

여기 내가 한 일 :

$(document).ready(function() {
      $.tablesorter.addParser({
        id: 'fancyNumber',
        is:function(s){return false;},
        format: function(s) {return s.replace(/[\,\.]/g,'');},
        type: 'numeric'
    });
    $("table").tablesorter({headers: {0: {sorter: 'fancyNumber'}}});
});

쉼표 및 도트 분리기와 함께 일했습니다.

테스트하십시오 http://jsbin.com/equci5

나는 나를 위해 일한 해결책을 찾았다. 테이블 orter.js에서 수정하십시오 형식 플로트 () 다음과 같이 기능 :

this.formatFloat = function (s) {
            var i = parseFloat(s.replace(/[,]/g, ''));
            return (isNaN(i)) ? 0 : i;
        };

이것은 분류를 방해하는 쉼표를 대체합니다. 답을 찾았습니다 여기. 도움이 되었기를 바랍니다...!

.tablester () 선언에서 구문 분석기를 명시 적으로 할당 해보십시오.

.tablesorter( { headers: { 0: { sorter:'fancyNumber' } }); 

소스를 참조하십시오

Jared가 언급했듯이, 어떤 열이 어떤 열을 사용하는지 지정해야합니다. 열의 색인을 모르는 경우 다음을 사용하여 찾을 수 있습니다.

var fancyIndex = $('th.fancyColumn').prevAll().length
var headers = {};
headers[fancyIndex] = {sorter:'fancyNumber'}

$("table").tablesorter({headers:headers})

i,이 정규 표현을 시도해보십시오 : /( d {1,3})? (, d {3})* /

파서는 첫 번째 tbody 행만을보고 사용할 파서를 감지합니다. 나는 당신의 첫 번째 줄에 쉼표가 없다고 생각합니다. 나는 같은 문제를 겪었고 마침내 클래스 = "{SONCYNUMBER '}"를 사용하여 원하는 파서를 강요했습니다.

파서가 작동 해야하는 것이 정확합니다. 그 이유는 플러그인의 버그 때문이 아닙니다. 요컨대, 플러그인은 쉼표로 숫자를 정렬 할 수 있다고 생각하여 내장 된 분류기를 사용하지만 올바르게 정렬하지 못합니다.

그것을 고치는 몇 가지 방법이 있습니다.

먼저 (위에서 제안한대로) 분류 함수의 사용 (플러그인의 초기화시 또는 JavaScript에서)을 강제 할 수 있습니다.

둘째, 플러그인을 편집하여 자신의 기능을 선호하는 기능을 사용하여 플러그인의 220 행에서 FOR 루프의 방향을 되돌려 달성 할 수 있습니다.

셋째, 숫자 감지 함수를 수정하여 쉼표 (플러그인의 861 행)를 수정하거나 쉼표를 다루기 위해 기본 번호 소터 (플러그인의 852 행)를 수정하여 깨진 기본 정렬 동작을 수정할 수 있습니다.

테이블 포트 Google 코드 페이지 에서이 문제를 제기했습니다. http://code.google.com/p/tableserter/issues/detail?id=6

나는 나를 위해 일한 해결책을 찾았다. tablesterter.js에서 다음과 같이 Formatfloat () 함수를 수정하십시오.

this.formatFloat = function (s) {
            s = s.toString();
            var i = parseFloat(s.replace(/[,]/g, ''));
            return (isNaN(i)) ? 0 : i;
        };

이것은 분류를 방해하는 쉼표를 대체합니다. 여기서 답을 찾았습니다. 도움이 되었기를 바랍니다...!

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