2015-05-09 68 views
0

我已经构建了一个存储消息和用户的页面,以便将消息发送到db中。表单有一个限制:从发布消息到数据库之后的30秒内,不能使用同一个用户。从一小时的最后一分钟到下一小时的第一分钟

function undisable (id,time){ 
     setTimeout(function() { 
      $('#'+id).prop('disabled', false); 
     }, (30000-time)); 
} 

$('#destinatario option').each(function(){ 
    var ds = $(this).attr('data-ts'); 
    var dateArray = ds.split(" "); // split the date and time 
    var ds1 = dateArray[0].split("-"); // split each parts in date 
    var ds2 = dateArray[1].split(":"); // split each parts in time 
    var newDate = new Date(ds1[0], (+ds1[1] - 1), ds1[2], ds2[0], ds2[1], ds2[2]).getTime(); //parse it 
    var currentDate = new Date().getTime(); 
    var diff = currentDate - newDate; 
    if(diff < 30000){ 
     $(this).prop('disabled', true); 
     var id = $(this).attr('id'); 
     undisable(id,diff); 
    } 
}); 

现在我想添加一个新的条件:你不能从一个小时的最后一分钟到下一个的第一分钟发布到任何用户。因此,例如,您不能从10:59:00到11:01:00发帖(以此类推每天的一小时)。 什么是最明智的方法来设置if子句来做到这一点? 我想建立是一样的东西:

if(now(minutes) is between 59 and 01){ //this is the point where I get stuck at 
    $('#sendbutton').prop('disabled', true); //I cannot post 
}else{ 
    $('#sendbutton').prop('disabled', false); //I can post 
} 

感谢您的帮助!

回答

1

你说得对,这使事情变得复杂。以下是解决问题的代码。依靠setTimeouts来禁用和启用按钮,并且您可以轻松地编辑想要禁用按钮的时间。

function time_disabler() 
 
{ 
 
    var time_disable = 59; // time in minutes to disable the button 
 
    var time_enable = 1; // time in minutes to enable to button 
 
    var current_mins = new Date().getMinutes(); // current time (minutes) 
 
    var current_secs = new Date().getSeconds(); // current time (seconds) 
 
    var total_seconds = current_mins * 60 + current_secs; // current time overall in seconds 
 
    var last_min_secs = time_disable*60; // time in seconds to disable the button 
 
    var first_min_secs = time_enable * 60; // time in seconds to enable the button 
 

 
    
 
    // if in between the two times, disable button 
 
    if((total_seconds >= last_min_secs && total_seconds < first_min_secs) || (total_seconds < first_min_secs && first_min_secs < last_min_secs)) 
 
    { 
 
     $('#sendbutton').prop('disabled', true); //I cannot post 
 
     var time = (total_seconds >= first_min_secs)? first_min_secs + (60*60) - total_seconds : first_min_secs - total_seconds ; 
 

 
     // set time out to recall this function, which will enable it 
 
     var t = setTimeout(function(){ 
 
      time_disabler(); 
 
     }, time * 1000); 
 
     
 
    } else { // if not between the times, disable it 
 
     
 
     $('#sendbutton').prop('disabled', false); //I can post 
 
     
 
     // set time out to recall this function, which will disable it 
 
     var t = setTimeout(function(){time_disabler();}, ((last_min_secs> total_seconds ? last_min_secs : last_min_secs + 60*60) - total_seconds) * 1000); 
 
    } 
 
} 
 
time_disabler();

- 老回答 -

你只使用JavaScript的getMinutes()以及getSeconds():

var current_mins = new Date().getMinutes(); 
 
var current_secs = new Date().getSeconds(); 
 
current_mins += current_secs/60; 
 

 
if(current_mins >= 59 || current_mins <= 1) 
 
{ 
 
    $('#sendbutton').prop('disabled', true); //I cannot post 
 
} else { 
 
    $('#sendbutton').prop('disabled', false); //I can post 
 
}

+0

情况是一点点比较法。加载页面后,我应该可以在两个禁用的mnutes后发布消息。就像我为单件物品做了30秒一样。 –

+0

编辑我的答案做你想做的! –

+0

谢谢! :)正在寻找一个提示,但你给了我一个完整的答案! –

相关问题