Поменять свойство disable в зависимости от времени.
Добрый день! Я новичек и мне нужна помощь.
У меня есть форма с кнопкой. Как сделать данную кнопку активной в определенное время каждый день? Например кнопка всегда неактивна, кроме с 16 00 до 17 00 каждый день <form action="" method="post"> <input type="hidden" name="do" value="payeer_pay"> <input type="hidden" name="antipovtor" value="<?=time();?>"> <table width="930" height="21px" border="0" cellpadding="0" cellspacing="0"> <tbody><tr> <td align="center"> <br><b>Введите сумму вклада (от <?=$mindep?> до <?=$maxdep?> рублей) </b> <br> <br><input style="text-align:center;" name="m_amount" type="text" value="100" size="5" maxlength="10"><input type="submit" name="submit2" value="Сделать вклад" class="reg"></td> </tr> Пробовал вот этот способ переделать, но не получилось <script> $(function() { // установить кнопки свойство disabled, равное true (т.е. сделать её не активной) $('input[type="submit"]').prop('disabled', true); // при отпускании клавиши, проверить значение данного поля $('input[name="m_amount"]').keyup(function() { // если значение не равно пустой строке if($(this).val() != '') { // то сделать кнопку активной (т.е. установить свойству disabled кнопки значение false $('input[type="submit"]').prop('disabled', false); } }); }); </script> С пустым значением работает. |
hacklife,
это ограничение лучше сделать на сервере, любой сможет отменить 'disabled' на клиенте, и время на клиенте у каждого своё |
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<input type="submit" name="submit2" value="Сделать вклад" class="reg">
<script>
$(function(){
var date = new Date();
(function dis(){
$('input[type="submit"]').prop('disabled', date.getHours() !== 16);
setTimeout(dis,1000);
})();
});
</script>
но лучше сервер, переведите на компе время и кнопка станет активной |
Цитата:
|
if(date('H')==16){
//do something
};
|
Цитата:
|
hacklife, if(date('H')==16) будет означать, что условие для для всех клиентов определяется временем сервера. Блокировать кнопку можно, а можно вообще не выводить на страницу форму. Но так или иначе этого мало, обмануть при желании всегда можно, а значит блокирование, это чисто для клиента, а сервер же должен всегда проверять время при приеме формы и не принимать ее если не соблюдается условие.
|
Цитата:
|
Цитата:
|
Я имею ввиду данный вариант работает. А мне нужно что бы для любого часового пояса было одинаково, по времени МСК.
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<input type="submit" name="submit2" value="Сделать вклад" class="reg">
<script>
$(function(){
var date = new Date();
(function dis(){
$('input[type="submit"]').prop('disabled', date.getHours() !== 16);
setTimeout(dis,1000);
})();
});
</script>
|
Цитата:
|
Цитата:
var tzoffset = (new Date()).getTimezoneOffset() * 60000;
var date = (new Date(Date.now() + tzoffset + 10800000 ));
alert(date);
|
Dilettante_Pro, к западу и востоку смещения часовых поясов имеют разные знаки.
|
laimas,
И что? Расчет будет неправильно работать? Для Москвы, например, tzoffset = -10800000 И что из этого? |
А как оно может работать правильно, если вычисление будет слева направо, а значит знак может быть не учтен? Либо разность смещений вычитаем, либо в общем выражении выносим их в скобки.
Мало того, у вас московское смещение всегда отрицательно, и будет верно только для тех кто восточнее Гринвича, а кто сказал, что запросы не могут быть с западных. Корректнее смешение сервера передавать самому серверу на клиента. Сервер в отличие от клиента передает их с противоположным знаком - для восточных положительные, для западных отрицательные. |
Цитата:
|
На данный момент весь кусок кода выглядит вот так
<form action="" method="post" onkeydown="if(event.keyCode==13){return false;}" >
<input type="hidden" name="do" value="payeer_pay">
<input type="hidden" name="antipovtor" value="<?=time();?>">
<table width="930" height="21px" border="0" cellpadding="0" cellspacing="0">
<tbody><tr>
<td align="center">
<br><b>Введите сумму вклада (от <?=$mindep?> до <?=$maxdep?> рублей) Кнопка "Сделать вклад" станет активной во время рестарта </b> <br> <br><input style="text-align:center;" name="m_amount" type="text" value="100" size="5" maxlength="10"><input type="submit" name="submit2" value="Сделать вклад" class="reg" </td>
</tr>
</tbody></table>
</form>
<script>
$(function() {
$('input[type="submit"]').prop('disabled', true);
$('input[name="m_amount"]').keyup(function() {
if($(this).val() != '') {
$('input[type="submit"]').prop('disabled', false);
}
});
});
</script>
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<script>
$(function(){
var date = new Date();
(function dis(){
$('input[type="submit"]').prop('disabled', date.getHours() !== 16);
setTimeout(dis,1000);
})();
});
</script>
|
Цитата:
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<input type="submit" name="submit2" value="Сделать вклад" class="reg">
<script>
$(function(){
(function dis(){
$('input[type="submit"]').prop('disabled', (Date.now() / 1000 / 3600 % 24 | 0) !== 13);
setTimeout(dis, 1000);
})();
});
</script>
|
Цитата:
|
Цитата:
Далее по формуле убираем их местное смещение и добавляем отрицательное московское. Вот и все. Время московское, что и хотел ТС. Насчет того, что клиент может подкрутить часы - это да, на клиенте с этим не справиться. Только сервер. |
Dilettante_Pro, проверьте на какой либо фиксированной метке.
|
laimas,
Спасибо. Проверил по Бразилии, исправил Пост 12. Теперь работает нормально |
| Часовой пояс GMT +3, время: 08:51. |