Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Поменять свойство disable в зависимости от времени. (https://javascript.ru/forum/events/74766-pomenyat-svojjstvo-disable-v-zavisimosti-ot-vremeni.html)

hacklife 07.08.2018 08:48

Поменять свойство 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>
С пустым значением работает.

рони 07.08.2018 09:03

hacklife,
это ограничение лучше сделать на сервере, любой сможет отменить 'disabled' на клиенте, и время на клиенте у каждого своё

j0hnik 07.08.2018 09:07

<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>


но лучше сервер, переведите на компе время и кнопка станет активной

hacklife 07.08.2018 10:20

Цитата:

Сообщение от j0hnik (Сообщение 491976)
<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>


но лучше сервер, переведите на компе время и кнопка станет активной

Как можно сделать проверку на сервере?

Nexus 07.08.2018 10:23

if(date('H')==16){
    //do something
};

hacklife 07.08.2018 11:00

Цитата:

Сообщение от Nexus (Сообщение 491987)
if(date('H')==16){
    //do something
};

Можно на примере выше показать как встроить эту проверку? И ещё: как заблокировать отправку формы по нажатию Enter? Буду премного благодарен.

laimas 08.08.2018 07:05

hacklife, if(date('H')==16) будет означать, что условие для для всех клиентов определяется временем сервера. Блокировать кнопку можно, а можно вообще не выводить на страницу форму. Но так или иначе этого мало, обмануть при желании всегда можно, а значит блокирование, это чисто для клиента, а сервер же должен всегда проверять время при приеме формы и не принимать ее если не соблюдается условие.

hacklife 08.08.2018 09:46

Цитата:

Сообщение от laimas (Сообщение 492097)
hacklife, if(date('H')==16) будет означать, что условие для для всех клиентов определяется временем сервера. Блокировать кнопку можно, а можно вообще не выводить на страницу форму. Но так или иначе этого мало, обмануть при желании всегда можно, а значит блокирование, это чисто для клиента, а сервер же должен всегда проверять время при приеме формы и не принимать ее если не соблюдается условие.

Доброе утро! Я это понимаю. Проблема в том что пытаюсь прописать условие, и ограничение не работает. Ограничение по времени клиента работает. Возможно я что-то неверно делаю.

laimas 08.08.2018 10:33

Цитата:

Сообщение от hacklife
Ограничение по времени клиента работает.

Каким образом сервер будет знать о времени клиента?

hacklife 08.08.2018 11:44

Я имею ввиду данный вариант работает. А мне нужно что бы для любого часового пояса было одинаково, по времени МСК.
<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>


Часовой пояс GMT +3, время: 15:06.