我尝试为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解析器。 日期字段仅按第一个数字(日期的日期)排序。
这是我第一次定义自定义解析器。我已经引起了那些主题:
答案 0 :(得分: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'
}
}
});
});
现在它正常工作了!