2015-04-20 5 views
2

У меня есть выбор с несколькими вариантами. Каждый из вариантов исходит из db, где у меня также есть метка времени, когда последний раз этот параметр использовался. Я хотел бы оставить эту опцию отключенной, если она была использована за последние 30 секунд. Что я не знаю, как справиться с этой ситуацией: я открываю страницу, и опция отключена: например, эта опция была использована 15 секунд назад. Через 15 секунд опция снова должна быть включена. Мой код до сих пор обрабатывать только первую часть этого дела:сохранить параметр отключен, пока условие истинно

var ds = "<?php echo $myPage['lastmsg']; ?>"; 
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 < 30){ 
    $(this).attr('disabled',true); 
} 

Как сказать: в то время как отображается страница, если дифф СТАНОВИТСЯ> 30, то .attr («отключено», ложь)?

ответ

2

Просто запустите функцию после заданного времени, которое изменит состояние.

item = $(this); 

if(diff < 30){ 
    item.attr('disabled', true); 

    setTimeout(function() { 
    item.attr('disabled', false); 
    }, (30-diff)*1000); 
} 
+0

Легко и чисто. Вы просто говорите: «Вы использовали опцию 10 секунд назад, так что подождите 20 секунд, а затем снова включите ее! Спасибо! –

+0

Добро пожаловать. –

0

Я думаю, что это то, что вы ищете:

if(diff < 30){ 
    $(this).attr('disabled',true); 
} 
else{ 
    $(this).removeAttr('disabled'); 
} 

Теперь, если он не отключен он всегда будет включен.

+0

Нет, это, очевидно, не сработает. Оператор if вычисляется только при загрузке страницы, а btw оператор else не нужен, поскольку по умолчанию параметры включены. Мне нужно, если страница уже загружена –

+0

Имеет смысл, не совсем понял вопрос. – Dhunt