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


Автор: ochnev 31.7.2008, 12:02
Подскажите, как проще всего отключить кнопку при клике?
То есть кликнули по кнопке "submit", и она стала disabled. То есть защита от повторного клика.

Автор: bars80080 31.7.2008, 12:39
onclick="this.disabled=true;" поможет?

что при нажатии страница не сразу уходит?

Автор: comtat 31.7.2008, 12:43
Цитата(ochnev @  31.7.2008,  12:02 Найти цитируемый пост)
То есть кликнули по кнопке "submit", и она стала disabled. То есть защита от повторного клика.

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

Автор: Samotnik 31.7.2008, 12:55
Код

<html>
<head>
<title>q</title>
</head>
<body>
<input type="submit" id="ITSubmit" onclick="disableInput()">
<script>
   function  disableInput()  {
       var element =  document.getElementById('ITSubmit');
       element.disabled = "true";  
   }
</script>
</body>
</html>

Автор: bars80080 31.7.2008, 12:56
да нет, я так понимаю трабла возникает в случае тугоумия сервера или узости канала. кнопку нажал и даже не видно, послалось что? может не попал? жмёшь снова, а потом смотришь как два коммента от тебя сидят

Автор: ochnev 31.7.2008, 13:02
Цитата(bars80080 @ 31.7.2008,  12:56)
да нет, я так понимаю трабла возникает в случае тугоумия сервера или узости канала. кнопку нажал и даже не видно, послалось что? может не попал? жмёшь снова, а потом смотришь как два коммента от тебя сидят

А ещё на ноутбуке если по touch pad'у пальцем случайно 2 раза чиркнешь, то получается как бы двойной клик. Даже если сервер быстрый, форма успевает выстрелить дважды. А там, например, финансовые данные в intranet-системе... Короче, предохраняться тут нужно обязательно.

Вариант от Samotnik - то, что надо.

Благодарю.

Автор: Dima 2015 31.7.2008, 23:54
bars80080, 
ochnev, 

Если не ошибаюсь, есть такая тема - если дизэйблишь кнопку сабмита во время клика то в одной из версий оперы перестает отправляться форма, поэтому мы защиту от двойного нажатия делали так: в качестве кнопки для отправки формы используется обычный <input type="button">.

Затем ему на onclick вешается JS ф-ция function submitForm():

Код

var form_sent = false; // Флаг отправлена ли форма
    
    function submitForm() {
        
        if( form_sent == false ) {
           form_sent = true;
           document.getElementById('my_form').submit();
        }
    }




Автор: ksnk 3.8.2008, 15:24
А ентером форма отправляется? Может лучше менять в форме onsubmit?
Код

<form  target="_blank" action="myhandle.php" onsubmit="this.onsubmit=function (){return false;};">
...
<input type="text">
...
</form>

таргет нужен для проверки на нетормозной машинке. В боевой версии нужно его удалить.

Ну, разукрасить можно бы, чтобы юзер видел, что на  каппу он таки нажал.

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