Как сделать disabled кнопки во время отправки формы?
Здравствуйте!
Есть форма для отправки сообщения: <form onsubmit="zapret()"> <textarea cols="30" rows="5"></textarea> <br/> <input id="ds" type="submit"/> </form> Хочется сделать кнопку submit неактивной во время отправки. Чтобы, в случае задержки отправки, ее не нажимали несколько раз. Пробовал так: function zapret() { var btn = document.getElementById('ds').disabled = true; } Так не работает. В чем моя ошибка? И можно ли сделать, чтобы вообще все элементы формы становились во время отправки неактивными? |
В функции zapret поставьте return false;
Данные формы можно отправить не только нажатием кнопки submit, но и нажатием Enter, если в одном из полей ввода установлен фокус, потому надо отключать событие onsubmit формы или кнопки submit, без разницы. |
return false не помогает.
Обычные пользователи без мышки ничего не нажимают и не отправляют. Как раз из-за них мне и нужно запретить повторное нажатие кнопки. Чтобы ее не тыркали несколько раз подряд. |
Я разобрался, все фурычит!
|
Ну и как Вы это реализовали? В чем была ошибка?
|
Да так, как написано все и работает. Просто нужно было поставить какое-нибудь значение action у формы, чтобы отправка данных занимала какое-то время. А так все происходило слишком быстро и я не успевал заменить, что скрипт пашет :)
|
У меня вот тоже небольшая проблема с данным скриптом. Скрипт работает но при этом не происходит проверки полей форм. поскольку новичок в этом деле не совсем могу понять как правильно объединить, заставить работать 2 скрипта.
<script language="javascript"> function sendform() { if (document.form.form1.value == "") { alert('Вы не ввели фамилию'); return false; } if (document.form.form2.value == "") { alert('Вы не описали проблему'); return false; } return true; } </script> и <script language="javascript"> function zapret() { var btn = document.getElementById('ds').disabled = true; } </script> на одно событие (форму) ? <form action="work.php" method="POST" name='form' onsubmit="zapret()" onsubmit="return sendform();"> <input type="text" method="post" name="form1"> <input type="text" method="post" name="form2"> <input type="submit" name="submit" value="ok" id="ds"> Пробовал так - но увы ((( <script language="javascript"> function sendform() { if (document.form.form1.value == "") { alert('Вы не ввели фамилию'); return false; } if (document.form.form2.value == "") { alert('Вы не описали проблему'); return false; } return true; } { var btn = document.getElementById('ds').disabled = true; } </script> <form action="work.php" method="POST" name='form' onsubmit="return sendform();"> |
Ребят, вы что? Валидация формы на стороне клиента совсем не айс! Если уж на то пошлО, это можно взвалить на плечи броузера - HTML5 позволяет, почитайте про дополнительные свойства типа required, size etc у input'ов.
на jQuery есть готовые валидаторы форм, с кастомными правилами проверки форматов. Что бы перехватить отправку, action оставьте пустым, по onsubmit="check_form();return false;". Здесь check_form - обработчик формы, в нем Ваш обработчик и должен быть ajax-запрос с вызовом Вашего work.php типа response=$.ajax({url: 'work.php', dataType: 'text', async: false}).responseText;, в response Ваш work поместит свой ответ, например success, если все ОК или сообщение об ошибке. Спокойно парсите response, страничка не перегружается... про sql-инъекции не забудьте, точнее про защиту от них. |
Часовой пояс GMT +3, время: 21:53. |