执行在午夜重置投票cookie的功能

时间:2013-05-17 14:26:38

标签: javascript html

我正在建立一个网站,在某个时候人们可以投票赞成或不投票,他们每天只能这样做一次。我在网上发现了一个允许用户只投票一次的脚本,它有一个重置cookie的按钮,这样用户就可以再次投票。我希望按钮的投票功能在午夜后重置。这是html中的按钮激活的javascript代码。这是重置的.ld-btn-reset部分,所以我想让那个部分在午夜激活。

    run : function()
{
    var s = '';
    s += "<div class='ld-bar-like'></div>";
    s += "<div class='ld-bar-dislike'></div>";
    s += "<div class='ld-clear-both'></div>";
    $( this.domobj ).find( '.ld-stats-bar' ).html( s );

    var _this = this;

    $( this.domobj ).find( '.ld-btn-like' ).click( function(e){
        e.preventDefault();
        _this.vote( $(this), 'likes' );
    });

    $( this.domobj ).find( '.ld-btn-dislike' ).click( function(e){
        e.preventDefault();
        _this.vote( $(this), 'dislikes' );
    });


    $( this.domobj ).find( '.ld-btn-reset' ).click( function(e){
        e.preventDefault();
        var key = _this.getCookieName();
        Cookie.del( key );
        alert( 'Cookie has been reset!' );
    });

    this.send( '' );
},

1 个答案:

答案 0 :(得分:2)

如果您不关心人们通过清除cookie来“欺骗系统”,那么您应该在设置cookie时控制cookie的到期日期,而不是尝试重置它。

var currentDate = new Date();
var expirationDate = new Date(currentDate.getFullYear(), currentDate.getMonth(), currentDate.getDate()+1, 0, 0, 0);
$.cookie("vote", "5", {expires: expirationDate});

这将占用当天,为其添加1天,并将日期设置为0:00

要在下面的评论中引用您的示例代码,您将使用以下内容:

var currentDate = new Date();
var expirationDate = new Date(currentDate.getFullYear(), currentDate.getMonth(), currentDate.getDate()+1, 0, 0, 0);
var expires = "; expires=" + expirationDate.toGMTString(); 
document.cookie = name + "=" + value + expires + "; path=/";

更详细地解释流程:

  1. 我们将“currentDate”设置为当前时间和日期
  2. 我们通过建立当前年,月和日的日期来设置新的到期日期,然后我们加1(明天早上午夜)
  3. 我们将“expires”字符串设置为“; expires =”,然后将截止日期转换为GMT日期字符串
  4. 然后设置您的cookie名称,值和新的到期时间
  5. 您的旧代码基本上是将24小时添加到当前日期和时间