• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

Залипание кнопки на Javascript.

  • Автор темы Gamlet
  • Дата начала
G

Gamlet

У меня на сайте есть самопальная форма обратной связи. Мой хостер очень нервно относится к спаму (более 5 писем за минуту, могут стать причиной бана). Форма выглядит так:
Код:
<form name="form1" target="_parent" method="POST" action="chat_sumb.php" enctype="utf-8">
<textarea name="text" style="position:absolute;width:200px;height:125px;left:30px;top:100px;z-index:1"></textarea>
<input name="formbutton1" type="submit" value="Отправить" style="position:absolute;left:66px;top:232px;z-index:2">
<input name="id" value="1" type="text" style="position:absolute;width:0px;left:0px;top:173px;z-index:3">
</form>

По идеи, после нажатия на кнопку должен быть совершен переход на chat_sumb.php.
Из за медленного перехода, кнопку можно нажать несколько раз. Как сделать "Залипание" кнопки после первого нажатия? :(
 
E

etc

Код:
<input name="formbutton1" type="submit" value="Отправить" style="position:absolute;left:66px;top:232px;z-index:2" onclick="this.disabled=true;">
Так сойдет?
 
G

Gamlet

Спасибо. Но пример твой не очень рабочий.
У тебя он дисайблится, но не отправляет. Я так сделал:
Код:
<form name="form1" target="_parent" method="POST" onSubmit="formbutton1.disabled=true;" action="chat_sumb.php" enctype="utf-8">
<textarea name="text" style="position:absolute;width:200px;height:125px;left:30px;top:100px;z-index:1"></textarea>
<input name="formbutton1" type="submit" value="Отправить" style="position:absolute;left:66px;top:232px;z-index:2">
<input name="id" value="1" type="text" style="position:absolute;width:0px;left:0px;top:173px;z-index:3">
</form>
Вот так все работает.
 
E

etc

Но пример твой не очень рабочий.
Так я его и не проверял, как идею "залипания" тут написал :)
А сейчас глянул, ну да не все браузеры адекватно его понимают, но если подшаманить то поймут все. Ваш "плох" тем, что выделить в функцию тоже не получится ... без бубнов. :(
 
G

Gamlet

Ну я в джава скрипте вообще ноль. Смарганил рабочее. Если есть лучшее, а в этом я уверен, подскажи. Буду очень благодарен.
 
E

etc

Gamlet Да нет, тут нормально. Я просто имел ввиду что если все что под onSubmit тупо выделить в отдельную функцию, типа так:
Код:
<script>
funcrion _submit()
{
formbutton1.disabled=true;
}
</script>
с целью введения доп. логики или еще чего, то уже не прокатит, т.к. formbutton1 это непойми что.
И придеться делать типа так: var formbutton1 = document.getElementById('formbutton1');, и далее по тексту.
Поэтому и плох в "" написал и про бубны.
 
V

Vovochka

Ну всегда можно передать this в вызов функции
 
G

Gamlet

Vovochka
this не идет. У меня при этом вся форма пряталась, а кнопка пряталась и из под тишка при каждом нажатии отправляла.
 
V

Vovochka

Vovochka
this не идет. У меня при этом вся форма пряталась, а кнопка пряталась и из под тишка при каждом нажатии отправляла.
Правильно. Надо знать к чему идет это this.
Если вы событие формы обрабатываете, то this - объект этой формы.
Если событие кнопки, то this - эта кнопка.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!