如何将文本字符串添加到Date列并调整Tablesorter中的排序顺序

时间:2012-05-13 16:54:56

标签: jquery regex formatting tablesorter

我最近有help getting the correct Date format on my jQuery / tablesorter table。客户在一个表中列出公司,并希望按日期排序其中一列,其中几个是投资组合中的“活跃”公司,而其他公司已退出,那些是使用日期格式的公司。我遇到的问题是,因为这些都在同一个表中,并且Date列按日期排序,列为“活动”的公司在列表的开头或结尾处被组合在一起,但是在反向时间顺序中顺序。

因此,这些公司目前的排序类似于'主动'> '主动'> '主动'> 2006年1月> 2010年3月> 2012年2月等。

我想看看是否有办法将其添加到解析器中,以便将'Active'字符串转换为当前日期,以便公司排序如下:  '主动'> '主动'> '主动'> 2012年2月> 2010年3月> 2006年1月。

这可能吗?有任何想法吗?我决定在此开始一个新线程,因为它是前一个新问题,只是为了获得正确的日期格式。我在下面发布我的HTML和代码。提前谢谢。

<table id="myTable" class="tablesorter stripeMe sample" width="100%" cellpadding="0"  cellspacing="0">
<thead>
<th width="30%" align="left">COMPANY</th><th width="35%">DESCRIPTION</th><th width="17%"  align="left">INDUSTRY</th><th width="18%" align="left">EXIT DATE</th></tr></thead>
<tbody>
<tr><td width="30%">  Cartera Commerce, Inc. </td>
<td width="35%">Provides technology-enabled marketing and loyalty solutions 
</td><td width="17%">   Financials    </td> <td width="18%">Active</td>
</tr><tr><td width="30%">   Critical Information Network, LLC </td>
<td width="35%">Operates library of industrial professional training and certification materials 
</td><td width="17%">   Education    </td> <td width="18%">Active</td>
</tr><tr><td width="30%"> Cynergydata </td>
<td width="35%">Provides merchant payment processing services and related software products 
</td><td width="17%">   Merchant Processing    </td> <td width="18%">Active</td>
</tr><tr><td width="30%">    </td>
<td width="35%">Operates post-secondary schools  
</td><td width="17%">   Education    </td> <td width="18%">Active</td>
</tr><tr><td width="30%">  CorVu Corporation</td>
<td width="35%">Develops and distributes performance management software products and related services 
</td><td width="17%">   Information Technology    </td> <td width="18%">May 2007</td>
</tr><tr><td width="30%">    Fischer Imaging Corporation </td>
 <td width="35%">Manufactures and services specialty digital imaging systems and other  medical devices
</td><td width="17%">   Healthcare    </td> <td width="18%">Sep 2005</td>
</tr><tr><td width="30%">   Global Transportation Services, Inc.  </td>
<td width="35%">Provides air and ocean transportation and logistics services
</td><td width="17%">   Transportation     </td> <td width="18%">Mar 2010</td>
</tr><tr><td width="30%">  HMP/Rita  </td>
<td width="35%">Operates as a specialty medical device company that manufactures and markets vascular and spinal access systems
</td><td width="17%">   Healthcare    </td> <td width="18%">Dec 2006</td>
</tr>

</tbody>
</table>

当前的jQuery解析器:

$.tablesorter.addParser({
id: 'monthYear',
is: function(s) {
    return false;
},
format: function(s) {
    var date = s.match(/^(\w{3})[ ](\d{4})$/);
    var m = date ? date[1] + ' 1 ' || '' : '';
    var y = date && date[2] ? date[2] || '' : '';
    return new Date(m + y).getTime() || '';
},
type: 'Numeric'
});

$('#myTable').tablesorter({

headers: {
    3: {
        sorter: 'monthYear'
    }
}

});

1 个答案:

答案 0 :(得分:0)

这实际上只是一个简单的修改。将解析器更改为:

var today = new Date().getTime();

$.tablesorter.addParser({
    id: 'monthYear',
    is: function(s) {
        return false;
    },
    format: function(s) {
        // remove extra spacing
        s = $.trim(s.replace(/\s+/g, ' '));
        // process date
        var date = s.match(/^(\w{3})[ ](\d{4})$/),
            m = date ? date[1] + ' 1 ' || '' : '',
            y = date && date[2] ? date[2] || '' : '';
        return /active/i.test(s) ? today : new Date(m + y).getTime() || '';
    },
    type: 'Numeric'
});

表格单元格中的“active”一词将不区分大小写。这是一个demo of it working。请注意,在这种情况下,将来的日期(2012年7月)将排在“活动”之上。