Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: disabled кнопки после отправки формы на определенное время
Форумы портала PHP.SU » Клиентская разработка » JavaScript & VBScript » disabled кнопки после отправки формы на определенное время

Страниц (1): [1]
 

1. ninjajnin - 05 Ноября, 2015 - 11:23:41 - перейти к сообщению
Ребят, как залочить кнопку на время после нажатия средствами JavaScript?

Нужно что бы в теге input прописывался disabled на, скажем, 10 секунд... потом убирался прочь.

Вот так с disabled
CODE (html):
скопировать код в буфер обмена
  1. <form action = '#'>
  2. <input size = "15" ><br>
  3. <textarea ></textarea><br>
  4. <input type = "submit" id = "bu" value = "Отправить" disabled><br>
  5. </form>
2. OrmaJever - 05 Ноября, 2015 - 11:26:33 - перейти к сообщению
CODE (htmlphp):
скопировать код в буфер обмена
  1. onclick='dis(this)'
  2. ...
  3.  
  4. function dis( elem ) {
  5.   elem.disabled='disabled';
  6.   setTimeout(function( elem ) {
  7.      elem.disabled='';
  8.   }, 10000, elem)
  9. }

вроде должно работать, хоть мог где-то и ошибиться
3. ninjajnin - 05 Ноября, 2015 - 11:29:14 - перейти к сообщению
Наверное нужно было сразу сказать что я полный даун в JavaScript... Скажите, пожалуйста, куда пихать код?? Извините за тупой вопрос.
4. SAD - 05 Ноября, 2015 - 11:30:30 - перейти к сообщению
а накой черт Вы создали еще одну тему?
5. ninjajnin - 05 Ноября, 2015 - 11:31:48 - перейти к сообщению
Разобрался. Ну так раздел не подходит.
(Добавление)
Такая же беда, кнопка лочится, а форма не отправляется... все как всегда, пойду пожру песка...
6. SAD - 05 Ноября, 2015 - 11:46:07 - перейти к сообщению
я Вам написал решение в первой теме, в чем проблема ?
7. ninjajnin - 05 Ноября, 2015 - 11:52:32 - перейти к сообщению
Ваше решение на ajax, которого я не понимаю, а на разбор кода уйдет время, которого у меня нет. JavaScript еще более-менее могу логически прочесть и понять.
8. SAD - 05 Ноября, 2015 - 11:56:39 - перейти к сообщению
так покажите Ваш код отправки ajax запрооса и мы его поправим. или по Вашему тут экстрасенсы сидят?
9. ninjajnin - 05 Ноября, 2015 - 12:03:20 - перейти к сообщению
Да я готов признать Вас кем угодно, если эта штука заработает. Код не мой, и отчасти в этом проблема тоже. Модифицировал то, что понимал.

CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. <script type="text/javascript">
  3.  
  4. $(document).ready(function () {
  5.     $("#pac_form").submit(Send); // вешаем на форму с именем и сообщением событие которое срабатывает кодга нажата кнопка "Отправить" или "Enter"
  6.        
  7.     $("#pac_text").focus(); // по поле ввода сообщения ставим фокус
  8.     setInterval("Load();", 2000); // создаём таймер который будет вызывать загрузку сообщений каждые 2 секунды (2000 милесукунд)
  9. });    
  10.  
  11. // Функция для отправки сообщения
  12. function Send() {
  13.  
  14.     // Выполняем запрос к серверу с помощью jquery ajax: $.post(адрес, {параметры запроса}, функция которая вызывается по завершению запроса)
  15.     $.post("ajax.php",
  16.         {
  17.                
  18.         act: "send",  // указываем скрипту, что мы отправляем новое сообщение и его нужно записать
  19.         name: $("#pac_name").val(), // имя пользователя
  20.         text: $("#pac_text").val() //  сам текст сообщения
  21.     },
  22.      Load ); // по завершению отправки вызвовем функцию загрузки новых сообщений Load()
  23.  
  24.     $("#pac_text").val(""); // очистим поле ввода сообщения
  25.     $("#pac_text").focus(); // и поставим на него фокус
  26.        
  27.  
  28.     return false; // очень важно из Send() вернуть false. Если этого не сделать то произойдёт отправка нашей формы, те страница перезагрузится
  29. }
  30.  
  31.  
  32. var last_message_id = 0; // номер последнего сообщения, что получил пользователь
  33. var load_in_process = false; // можем ли мы выполнять сейчас загрузку сообщений. Сначала стоит false, что значит - да, можем
  34.  
  35. // Функция для загрузки сообщений
  36. function Load() {
  37.     // Проверяем можем ли мы загружать сообщения. Это сделанно для того, что бы мы не начали загрузку заново, если старая загрузка ещё не закончилась.
  38.     if(!load_in_process)
  39.     {
  40.             load_in_process = true; // загрузка началась
  41.             // отсылаем запрос серверу, который вернёт нам javascript
  42.         $.post("ajax.php",
  43.         {
  44.             act: "load", // указываем на то что это загрузка сообщений
  45.             last: last_message_id, // передаём номер последнего сообщения который получил пользователь в прошлую загрузку
  46.             rand: (new Date()).getTime()
  47.         },
  48.             function (result) { // в эту функцию в качестве параметра передаётся javascript код, который мы должны выполнить
  49.                     eval(result); // выполняем скрипт полученный от сервера
  50.                     $(".chat").scrollTop($(".chat").get(0).scrollHeight); // прокручиваем сообщения вниз
  51.                     load_in_process = false; // говорим что загрузка закончилась, можем теперь начать новую загрузку
  52.         });
  53.     }
  54. }

(Добавление)
сама форма выглядит так:

CODE (html):
скопировать код в буфер обмена
  1. <div class = "chat">
  2. <div id = "chat_area"></div>
  3. </div>
  4. <div class = "hidden" id = "cat1">
  5. <form id = "pac_form" action=''>
  6. <input size = "15" type = "text" id = "pac_name" placeholder = "Имя"><br>
  7. <textarea id = "pac_text"  rows = "5" cols = "21" placeholder = "Текст"></textarea><br>
  8. <input type = "submit" id = "bu" value = "Отправить"><br><br>
  9. </form>
  10. </div>
10. SAD - 05 Ноября, 2015 - 12:46:06 - перейти к сообщению
CODE (javascript):
скопировать код в буфер обмена
  1. function Send() {
  2.  
  3.     // Выполняем запрос к серверу с помощью jquery ajax: $.post(адрес, {параметры запроса}, функция которая вызывается по завершению запроса)
  4.     var $button = $('#bu');
  5.  
  6.     $button.prop('disabled', true);
  7.  
  8.     $.post("ajax.php",
  9.         {
  10.                
  11.         act: "send",  // указываем скрипту, что мы отправляем новое сообщение и его нужно записать
  12.         name: $("#pac_name").val(), // имя пользователя
  13.         text: $("#pac_text").val() //  сам текст сообщения
  14.     },
  15.      Load )  // по завершению отправки вызвовем функцию загрузки новых сообщений Load()
  16.      .always(function () {
  17.        $button.prop('disabled', false);
  18.      });
  19.  
  20.     $("#pac_text").val('').focus();; // очистим поле ввода сообщения и поставим на него фокус
  21.  
  22.        
  23.  
  24.     return false; // очень важно из Send() вернуть false. Если этого не сделать то произойдёт отправка нашей формы, те страница перезагрузится
  25. }
11. ninjajnin - 09 Ноября, 2015 - 08:35:04 - перейти к сообщению
не работает... если до отправки сообщения в чат адресная строка имела вид
test1.ru/

то после отпраки (сообщение, кстати, не добавилось в базу)
test1.ru/?
12. SAD - 09 Ноября, 2015 - 11:35:16 - перейти к сообщению
Цитата:
не работает...


Знаете как выглядит эта фраза? Жаль, что не нашел шутки про подобные описания проблем.

Ошибка, обычно, сидит перед монитором.

Скрипт, который представлен выше никаким образом не меняет url и он никаким образом НАПРЯМУЮ не отвечает за добавление записи в базу.

Вы пробовали дебажить, были ли ошибки в консоли бразуера?
13. ninjajnin - 11 Ноября, 2015 - 15:24:09 - перейти к сообщению
Короче ясно все... пойду почитаю основы ajax...
14. SAD - 11 Ноября, 2015 - 22:00:14 - перейти к сообщению
А чего Вы ожидаете после того как нормально не описали задачу? Не привели пример скрипта как с фронтенда так и с бэкенда. Тут нет ясновидящих и подобного рода людей.

 

Powered by ExBB FM 1.0 RC1