【问题标题】:tablesorter() jQuery function for dd-MMM-yyyy formattablesorter() dd-MMM-yyyy 格式的 jQuery 函数
【发布时间】:2014-07-10 13:42:00
【问题描述】:

这是我的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>

【问题讨论】:

标签: javascript jquery tablesorter


【解决方案1】:

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

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

【讨论】:

  • 嗯.. 仍然无法正常工作。其实这一次排序本身是不允许的......!
  • 问题是你的日子有时只有一位数。我编辑了代码来解决这个问题,并添加了一个 jsfiddle,这样你就可以看到它的工作了。
  • 谢谢。我对你的代码做了一些小修改,它工作正常。 :)
  • @ShridharGowda 太好了,乐于助人!我已经在我的答案中添加了您的细微修改,因此您无需自己发布。
  • 为我工作,但我必须将 tablesorter 升级到最新版本
【解决方案2】:

谢谢香蕉。我对您的代码进行了一些小改动,如下所示,现在它可以正常工作了:)

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'
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-06
    • 2018-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-17
    相关资源
    最近更新 更多