JQuery Tablesterter Comma 자리 파서가 작동하지 않습니다
-
22-08-2019 - |
문제
여기 내 문제가 있습니다.
현재 jQuery 테이블 분류기를 사용하고 있으며 웹에서 쉼표 자리 파서를 찾았습니다. 내가 가진 문제는 그것이 작동하지 않는 것 같습니다.
따라서 열이 다음과 같이 정렬됩니다.
- 4,666
- 141,666
- 293
- 341,666
- 346
- 461,676
이것은 다음과 같이 정렬해야합니다
- 293
- 346
- 4,666
- 141,666
- 341,666
- 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;
};
이것은 분류를 방해하는 쉼표를 대체합니다. 여기서 답을 찾았습니다. 도움이 되었기를 바랍니다...!