2012-07-09 37 views
3

在我的网页,我有日期的表(我的日期格式为DD-MM-YYYY)如何使用jquery根据日期条件更改css?

<tr> 
    <td>05-03-2012</td> 
    <td name="expiration">09-07-2012</td> 
    <td>08-10-2012</td> 
<tr> 

我想是摆在红色截止日期时,其值是>当前日期,使用Jquery。

所以,我想我会使用这样的:

<script> 
//don't know how to retrieve the expiration date and check if it is after the 
//current date 

$('td[name=expiration]').css({"color":"red"}); 
</script> 
+0

我可以帮你,但我需要知道,如果你的约会甲永远是MM-DD-YYYY – 2012-07-09 01:24:35

+0

好,谢谢!我的日期格式将始终为dd-mm-yyyy,实际上我使用{{object.dateExpiration |日期(d-m-Y)}}来显示此日期。 – Reveclair 2012-07-09 12:52:24

回答

3

更喜欢使用类,而不是一个名字让你的选择更高效:

<tr> 
    <td>05-03-2012</td> 
    <td class="expiration-date">09-07-2012</td> 
    <td>08-10-2012</td> 
</tr> 

var now = new Date; 
$('.expiration-date').text(function (i, v) { 
    if (now < new Date(v)) { 
     $(this).addClass('unexpired'); 
    } 
}); 

下面是一个的jsfiddle一个例子:http://jsfiddle.net/qRdNe/

+0

console.log(new Date(v));返回无效日期,这个代码真的工作 – tsukimi 2012-07-09 01:59:32

+0

它工作得很好,如此修改小提琴演示:http://jsfiddle.net/qRdNe/6/ – Josh 2012-07-09 12:13:54

+0

有一个日期格式的问题,当我添加var date =新日期(v);警报(日期);我有一个提醒“无效的日期”。 (我的格式是dd-mm-yyy)。 – Reveclair 2012-07-09 13:44:00

2

这并不占日期时间解析任何错误。

$('td[name=expiration]').each(function(){ 

    var innerText = $(this).text(); 
    var date = new Date(innerText); 
    var today = new Date();  

    if(date > today){ 
     //Set css here 
    } 
    else{ 
     //Set default here 
    } 

}); 
+2

来处理日期解析,使用这个答案,但添加以下行(函数的第一行上面,并更改变量“日期”的Date对象构造,如下所述: var str =内部文本分割(“ - ”);' var date = new Date(str [2],str [0],str [1],0,0,0,0);' – 2012-07-09 01:59:42

+0

没有必要去这样的长度来解析日期字符串。日期对象会做到这一点很适合你:http://jsfiddle.net/qRdNe/6/ – Josh 2012-07-09 12:14:42

+0

有一些字符串Date对象可以处理,如果直接传递,这是不是其中之一,如果你试图用这些单元格中的一个单元格的文本初始化Date对象,那么你会得到错误的日期。使用她的例子中的字符串,得到1969年12月31日。 – 2012-07-09 15:56:43

0

我已经基本组建了一个工作答案它来自这里给出的不同位,但在需要时进行更正,一个月的日期从零开始。也许你不想接受这是正确的答案,我只是把它放在这里,所以很容易参考。

$('.expiration').text(function(i,v){ 
    var datestr = v.split("-"); 
    d = new Date(datestr[2],datestr[0]-1,datestr[1],0,0,0,0); 
    var now = new Date();   
    if(console)console.log(d);   
    if(d>now) 
      { 
       $(this).css("color","red");    
      }     

}); 

http://jsfiddle.net/6zb5W/3/

+0

这个小提琴和我的相同版本号 – tsukimi 2012-07-10 01:42:14

+0

哎呦......试试这个:http://jsfiddle.net/qRdNe/6/ – Josh 2012-07-10 02:13:40

+0

在FF 12即时通讯使用它给出了一个无效的日期,即使日期是在现在它仍然突出显示日期 – tsukimi 2012-07-10 02:31:59