Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Убить кнопку на некоторое время


Автор: Danox 4.3.2006, 14:33
Народ кто скажет такую чтуку чтоб конпка не могла нажиматся некоторе время?
например я отправил сообщение в гостевую и копнка не нажималась и могла нажатся только через 10 минут =))))

Автор: Burrr 4.3.2006, 14:54
Код

<body onload="no_click(1000)">
<script type="text/javascript">
function no_click(msec)
{
    setTimeout("document.getElementById('button').disabled=false;",msec);
}
</script>
<input type="button" value="кнопка" id="button" disabled>
</body>

При загрузке страницы (событие onload) кнопка раздизэйбливается через 1 сек (1000 миллисекунд). Можно указать любое значение или использовать другое событие.

Автор: Danox 4.3.2006, 14:59
Ээ это че нудо пихать в body неет у меня шаблоновая система надо так чтоб была не в body
Добавлено @ 15:01
И воопще не то! Надо чтоб она умирала после клика на неё!

Автор: Burrr 4.3.2006, 15:05
Цитата

И воопще не то! Надо чтоб она умирала после клика на неё!

Тогда совсем просто:
Код

<input type="button" value="кнопка" onclick="this.style.display='none'">

Надо четче формулировать задачи!

Автор: Danox 4.3.2006, 15:24
Блин вы воопще мессагу смотрите она воопще исчезла а мне надо так!!!!!!!!!!!!!!!
Есть гостевая он вводит данные надмает на послать все он добавляет и надо чтоб как страницу не обнавляй чтоб он появился через 10 минут! и чтоб не при каждом обнавлениее по 10 минут а воопщем!

Автор: GIK 4.3.2006, 15:39
Цитата

Блин вы воопще мессагу смотрите она воопще исчезла а мне надо так!!!!!!!!!!!!!!!

Блин писал зря smile ну ладно может когда нибуть пригодится smile
Код

<html>
 <head>
  <script type="text/javascript">
   <!--
    var setTimeButton;
    var sec=0;
  function no_click()
{
  setTimeButton=window.setInterval("friSecond()",3000);
  
}

 function friSecond() {
 if(sec==0){ sec=1;
 document.getElementById('button').style.visibility='hidden';}
 else{document.getElementById('button').style.visibility='visible'; sec=0;}
}
 //-->
  </script>
 </head>
<body>   
<input type="button" value="кнопка" id="button" onClick="no_click()">
</body>
</html>

Добавлено @ 15:41
Цитата

Есть гостевая он вводит данные надмает на послать все он добавляет и надо чтоб как страницу не обнавляй чтоб он появился через 10 минут! и чтоб не при каждом обнавлениее по 10 минут а воопщем!

Чесно говоря мало что понятно. Давай еще раз сформулируй а smile .




Автор: Burrr 4.3.2006, 15:54
Мда, с формулировкой задачи у Danox однозначно проблема.
Как понять слово "умирала" из 3-го поста?
В 5-ом посте вообще какя-то абра-кадабра.
Чтобы тебе смогли помочь, надо четко сформулировать где и в чем.
Например дать ссылку на ресурс, где скрипт, который тебе нужен, успежно работает.

Автор: Danox 4.3.2006, 15:56
И так есть гостевая на php. В гостевой есть форма, где заполняются поля к примеру Имя, Емаил и.т.д.
Мне надо сделать анти флуд защиту т.е. он заполнил все поля нажал на "Отправить" сообщение добавилось и кнопка была недостпуна 10 минут.
Но чтоб можно было страницу обнавлять переходить а потом прийти если время истекло кнопка снова стала достпуна!
Добавлено @ 16:06
Убивать, бить, мертвить, умерщвлять, лишать жизни, губить, сразить, казнить. Повесить, задушить, удавить, расстрелять, отравить, обезглавить, зарезать, закалать, заколоть, уморить голодом; прикончить, уложить, укокошить, отправить на тот свет, вышибить дух, вогнать в гроб, Убить наповал, насмерть, до смерти.

Автор: GIK 4.3.2006, 16:19
Цитата

Убивать, бить, мертвить, умерщвлять, лишать жизни, губить, сразить, казнить. Повесить, задушить, удавить, расстрелять, отравить, обезглавить, зарезать, закалать, заколоть, уморить голодом; прикончить, уложить, укокошить, отправить на тот свет, вышибить дух, вогнать в гроб, Убить наповал, насмерть, до смерти.

Да ты суровый парень smile

Автор: Burrr 4.3.2006, 17:02
Насколько я понял, кнопка должна быть "недоступна" даже после перезагрузки страницы (только по прошествии 10 минут).
Если речь идет о перезагрузке (иначе как на сервак уйдет то, что написал пользователь), то это надо делать на серверной стороне.
К JavaScript-у это отношение не имеет.

Автор: Danox 4.3.2006, 17:16
А как-же cookie smile

Автор: Alx 4.3.2006, 18:35

M
Alx

Danox, хватит выпендриваться.
если вам нужно, чтобы вам помогли, четко формулируйте задачу и уважайте тех, кто добровольно решил помочь вам.

Автор: dstorm81 4.3.2006, 18:48
куки тоже можно, но можно подделать smile и ЗАСПАМИТЬ супер кульную гомтевуху
делай на сервере, выслеживай IP

Автор: Alx 4.3.2006, 19:32
Код

<html>
<head>
<script>
onload = checkCookie;

function checkCookie()
{   if (getCookie('submit_button') != null)
    {   document.getElementById("subm").disabled = true;
        setTimeout("checkCookie()",1000);
    }
    else
    {  document.getElementById("subm").disabled = false;
    }
}

function setCookie(name, value, expires)
{   var curCookie = name + "=" + escape(value) + ((time(expires)) ? ";expires=" + time(expires) : "");
    if ((escape(value)).length <= 4000)
        document.cookie = curCookie+";";
} 

function getCookie(name)
{   var prefix = name + "=";
    var cookieStartIndex = document.cookie.indexOf(prefix);
    if (cookieStartIndex == -1)
        return null;
    var cookieEndIndex = document.cookie.indexOf(";", cookieStartIndex + prefix.length);
    if (cookieEndIndex == -1)
        cookieEndIndex = document.cookie.length;
   return unescape(document.cookie.substring(cookieStartIndex + prefix.length, cookieEndIndex));
} 

function time(min)
{   var d = new Date();
    var expires = new Date(d.getTime()+60000*min);
    return expires.toGMTString();
}
</script>
</head>
<body>
<input type="button" id="subm" onclick="this.disabled=true;setCookie('submit_button','yes',5)" value="Отправить">
<br><br> // кнопка будет недоступна в течение 5 минут.
</body></html>

Добавлено @ 19:35
http://soft.flyweb.in/small/block_button.html

Автор: Zaman 4.3.2006, 20:05
при выключенных cookie http://soft.flyweb.in/small/block_button.html - скрипт не работает так как задуманно, то есть при обновлении страницы кнопка доступна для нажатия. Задачу эту надо решать не при помощи клиентского JS, а на сервере

Автор: Alx 4.3.2006, 20:56
просили куки, я и сделал куки smile

Автор: Danox 4.3.2006, 23:21
Все решил пробелму тем что сравнивал последние сообщение от данного ip с настоящим и время сравнивал то что отпавили и сейчасное вот и все спасибо Alx за код он пригодился в другом случие smile

Автор: 12345c 4.3.2006, 23:56
Danox, этим методом, как ты сделал сейчас, делают стандартный флуд-контроль в форумах, так что всё правильно. А если методами JS решать, то заблокируешь кнопку (поставить disabled после отправки), но откроют второе окно и отправят снова.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)