如何为tablesorter jQuery插件定义自定义日期解析器?
我正在为一个jQuery插件定义一个自定义的日期解析器。这里是我的表格:

我尝试在我的jQuery中这样定义一个自定义的日期解析器:
<script type="text/javascript" src="{% static 'js/jquery.tablesorter.min.js' %}"></script>
<script type="text/javascript">
$(document).ready(function() {
$('.tablesorter').tablesorter();
// add parser through the tablesorter addParser method
$.tablesorter.addParser({
id: "customDate",
is: function(s) {
return /[0-9]{1,2} [a-zA-Z]+, [0-9]{1,2}:[0-9]{1,2}/.test(s);
//return false
},
format: function(s) {
s = s.replace(/,/,"").replace(/:/," ");
s = s.replace(/January/,1).replace(/February/,2).replace(/March/,3).replace(/April/,4).replace(/May/,5).replace(/June/,6).replace(/Jully/,7).replace(/August/,8).replace(/September/,9).replace(/October/,10).replace(/November/,11).replace(/December/,12);
s = s.split(" ");
s = s[1]*1000000+s[0]*10000+s[2]*100+s[3]
return s
},
type: "numeric"
});
});
</script>
但是它没有效果。看起来这个customDate解析器根本没有被调用。日期字段只根据第一个数字(日期中的天数)进行排序。
这是我第一次定义自定义解析器。我查阅了一些相关的资料来完成这个任务:
1 个回答
2
我解决了这个问题。我的错误是把 $.tablesorter.addParser
放在了 $(document).ready(function()
这个函数里面...
我现在是这样做的:
$.tablesorter.addParser({
id: "customDate",
is: function(s) {
return /^[0-9]{1,2} [a-zA-Z]+, [0-9]{1,2}:[0-9]{1,2}$/.test(s);
},
format: function(s) {
s = s.replace(/,/,"").replace(/:/," ");
s = s.replace(/January/,1).replace(/February/,2).replace(/March/,3).replace(/April/,4).replace(/May/,5).replace(/June/,6).replace(/Jully/,7).replace(/August/,8).replace(/September/,9).replace(/October/,10).replace(/November/,11).replace(/December/,12);
s = s.split(" ");
s = s[1]*1000000+s[0]*10000+s[2]*100+s[3];
return s;
},
type: "numeric"
});
$(document).ready(function() {
$('.tablesorter').tablesorter({
headers: {
1: {
sorter:'customDate'
}
}
});
});
现在它工作得很好!