tablesorter()用于dd-MMM-yyyy格式的jQuery函数

时间:2014-07-10 13:42:01

标签: javascript jquery tablesorter

这是我的HTML代码。

此代码不适用于日期格式,而是按字符串格式排序。

我还在jquery tablesorter sort date dd mmm yyyy中引用了一篇文章,如<。}}。

但是对于这种格式它不起作用。

我正在使用像

这样的正则表达式
^(([0-9])|([0-2][0-9])|([3][0-1]))\-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\-\d{4}$

仍然无法正常工作。请帮帮我

<html>
<head><title>

</title><link href="themes/blue/style.css" rel="stylesheet" /><link     href="themes/green/style.css" rel="stylesheet" />
<script src="jQuery/jquery-1.9.0.min.js" type="text/javascript"></script>

<script src="jQuery/jquery.tablesorter.js" type="text/javascript"></script>
<script src="jQuery/TableSorter.js" type="text/javascript"></script>
<script type="text/javascript">
    $(document).ready(function () {
        $("#GrdViewEmployee").tablesorter({ 
             sortList: [[0, 0], [2, 1]], 
             widgets:'zebra'
        });
    });
</script>
</head>
<body class="tablesorterBlue">
<form method="post" action="WebForm1.aspx" id="form1">
<div class="aspNetHidden">
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="fauQ7GKDqTon5mt7NHJnOCzVzfTVHWHj+gG3j+CA8mTf4JJVPho0PBzFatn/hz/0xu7X0+jfUVQHlCgPQh5CNnoHCyzZOnTqgr7nSstUfCj5JlrZkhV7468h3Vx1e7Er" />
</div>

    <div>
<table cellspacing="0" rules="all" class="tablesorterBlue" border="1" id="GrdViewEmployee" style="border-collapse:collapse;">
    <thead>
        <tr>
            <th scope="col">empId</th><th scope="col">empName</th><th scope="col">empEMail</th><th scope="col">empPhone</th>
        </tr>
    </thead><tbody>
        <tr>
            <td>1</td><td>rameshwar</td><td>ram@hcl.com</td><td>2-Aug-2013</td>
        </tr><tr>
            <td>2</td><td>shrivatsav</td><td>ggtgh@shri.com</td><td>27-Aug-2013</td>
        </tr><tr>
            <td>3</td><td>ganga</td><td>karna@kulla.com</td><td>14-Jan-2013</td>
        </tr><tr>
            <td>4</td><td>krishna</td><td>krish@krish.com</td><td>13-Jan-2014</td>
        </tr><tr>
            <td>5</td><td>mahesh</td><td>hfgsdhjf@jdfsgjd</td><td>30-Nov-2013</td>
        </tr><tr>
            <td>6</td><td>Shridhar</td><td>shri@shri.com</td><td>1-Dec-2013</td>
        </tr>
    </tbody><tfoot>

    </tfoot>
</table>
</div>
</form>
</body>
</html>

2 个答案:

答案 0 :(得分:3)

您可以添加自己的解析器:

monthDict = {
    'Jan': '01','Feb': '02','Mar': '03',
    'Apr': '04','May': '05','Jun': '06',
    'Jul': '07','Aug': '08','Sep': '09',
    'Oct': '10','Nov': '11','Dec': '12'
}
$.tablesorter.addParser({ 
    id: 'mydate', 
    is: function(s) {return false}, 
    format: function(s) { 
        var date = s.split('-');
        var date[0] = (date[0].length == 1) ? '0' + date[0] : date[0];
        return date[2] + monthDict[date[1]] + date[0];
    }, 
    type: 'numeric' 
}); 
$("#GrdViewEmployee").tablesorter({
    sortList: [[0, 0], [2, 1]], 
    widgets: 'zebra',
    headers: {3: {sorter:'mydate'}} 
}); 

请参阅working jsfiddle

答案 1 :(得分:0)

谢谢香蕉。我对你的代码做了一个小改动,如下所示,现在工作正常:)

var monthDict = {
'Jan': '01',
'Feb': '02',
'Mar': '03',
'Apr': '04',
'May': '05',
'Jun': '06',
'Jul': '07',
'Aug': '08',
'Sep': '09',
'Oct': '10',
'Nov': '11',
'Dec': '12'
}
 $.tablesorter.addParser({

  id: 'mydate',
  is: function(s, table, cell) {return false;},
 format: function(s, table, cell, cellIndex) {

var dat = s.split('-');
dat[0]= (/^\d{2}$/.test(dat[0]))? dat[0]: '0'+dat[0];//If 'dd' format is single digit, append 0 to it.
return dat[2]+monthDict[dat[1]]+dat[0];//Sort in 'yyyymmdd' format as priority of sorting

 },

  type: 'numeric'
});