Модераторы: Sardar, Aliance

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Нажать Submit только 1 раз, как сделать? 
:(
    Опции темы
Рейкин
Дата 1.6.2005, 00:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 198
Регистрация: 23.11.2003
Где: Баку, Азербайджан

Репутация: нет
Всего: 1



Как сделать, чтобы Submit можно было нажать только однажды на странице. Как на этом форуме, например: нажал и неактивны больше кнопки.

Спасиб
PM WWW   Вверх
Sardar
Дата 1.6.2005, 01:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Ставим кнопку в disabled=true, снимаем сие дело по таймеру, если твой сервак/коннект проглючил и ничего не загрузил.
Код
<script type="text/javascript">
<!--
function disable_me(bt) {
  bt.disabled=true;
  window.setTimeout(function() {bt.disabled=false;}, 10000); //десять секунд
}
//-->
</script>
<button onclick="disable_me(this);">Test</button>



--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Рейкин
Дата 1.6.2005, 02:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 198
Регистрация: 23.11.2003
Где: Баку, Азербайджан

Репутация: нет
Всего: 1



благодарю. простестю - отпишу.
PM WWW   Вверх
Рейкин
Дата 1.6.2005, 03:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 198
Регистрация: 23.11.2003
Где: Баку, Азербайджан

Репутация: нет
Всего: 1



Я посылаю форму методом post,

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

В чём проблема, подскажите.

Это сообщение отредактировал(а) Рейкин - 1.6.2005, 03:37
PM WWW   Вверх
Sardar
Дата 1.6.2005, 03:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Покажи код, иначе не известно. Естественно что в своём коде я твою форму не отсылаю smile
Если это нужно, то не только выкладывай свой код, но и говори конкретней что ты сам не можешь сделать smile

Передай ссылку на форму, вызови метод submit().


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Рейкин
Дата 1.6.2005, 05:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 198
Регистрация: 23.11.2003
Где: Баку, Азербайджан

Репутация: нет
Всего: 1



go.php
Код

<form action="go.php" method=post>
<input name=aaa value="$aaa" type=hidden>
<input name=ddd value="$ddd" type=hidden>
<input name=ccc value="$ccc" type=hidden>
<input type="submit" value="go">
</form>


после изменений получилось так

go.php
Код

<script type="text/javascript">
<!--
function disable_me(bt) {
  bt.disabled=true;
  window.setTimeout(function() {bt.disabled=false;}, 10000); //десять секунд
}
//-->
</script>
<form action="go.php" method=post>
<input name=aaa value="$aaa" type=hidden>
<input name=ddd value="$ddd" type=hidden>
<input name=ccc value="$ccc" type=hidden>
<input type="submit" value="go" onclick="disable_me(this);">
</form>


вот есть процедура, которая обрабатывает данные формы до определённого момента. Эт всё работает.

Просто обнаружен баг, что при постоянном нажатии на отсылку данных (не позволяя странице перегрузиться), происходит множественное выполнение процедуры с последствиями...

проще говоря, хочу запетить нажимать на кнопку submit более одного раза, пока страница не перегрузилась.

И спасибо за скорые ответы.
PM WWW   Вверх
o.s.a.
Дата 1.6.2005, 11:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Xo4y B MocKBy
**


Профиль
Группа: Участник
Сообщений: 312
Регистрация: 16.2.2005
Где: Ташкент

Репутация: 5
Всего: 15



Рейкин, так тебе сначала нужно отправить данные с формы, а потом уже отключать кнопку:
Код

<script type="text/javascript">

function disable_me(bt) {
  document.form1.submit()
  bt.disabled=true;
  window.setTimeout(function() {bt.disabled=false;}, 10000); //десять секунд
}

</script>
<form name="form1" action="go.php" method=post>
<input name=aaa value="$aaa" type=hidden>
<input name=ddd value="$ddd" type=hidden>
<input name=ccc value="$ccc" type=hidden>
<input type="submit" value="go" onclick="disable_me(this);">
</form>



--------------------
Не могу стоять, пока другие работают, пойду полежу.
PM MAIL ICQ   Вверх
Рейкин
Дата 1.6.2005, 16:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 198
Регистрация: 23.11.2003
Где: Баку, Азербайджан

Репутация: нет
Всего: 1



2-мя руками "за" smile

Как смогу проверить на сайте - отпишу.

Благодарю!
PM WWW   Вверх
Sardar
Дата 1.6.2005, 18:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Рейкин а не лучше ли было в сессиях тайм-флаг поставить?


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Рейкин
Дата 1.6.2005, 19:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 198
Регистрация: 23.11.2003
Где: Баку, Азербайджан

Репутация: нет
Всего: 1



Цитата(Sardar @ 1.6.2005, 18:59)
Рейкин а не лучше ли было в сессиях тайм-флаг поставить?

оппа, а это цельно решает мою проблему (описал выше)? алгоритм можно?

+инфо:
это онлайн игра. симуляция боя. удары, если конкретней.

Это сообщение отредактировал(а) Рейкин - 1.6.2005, 19:21
PM WWW   Вверх
Sardar
Дата 1.6.2005, 19:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Ставим переменную в сессиях, проверяем её при запросе.
Код

$block_time_out=30;// переменная конфига, как долго держать блок кнопки в секундах
//.....


if(!isset($_SESSION['send_time_block'])||(time()-$_SESSION['send_time_block'])>$block_time_out) {
  //юзер жмёт в первый раз или прошло время больше чем $block_time_out
  //делаем что нибдуь полезное
  $_SESSION['send_time_block']=time();
} else {
  //юзер жмёт повторно кнопку, а минимальное время блока не прошло
  // его бы красиво отослать, а не просто die... ;-)

  //редирект(рефрешь) на страницу с результатами через 5 секунд
  die("Вы уже отослали инфо");
}



--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Рейкин
Дата 1.6.2005, 19:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 198
Регистрация: 23.11.2003
Где: Баку, Азербайджан

Репутация: нет
Всего: 1



ясно.
я попробую, система интересная.


Это сообщение отредактировал(а) Рейкин - 1.6.2005, 19:50
PM WWW   Вверх
Рейкин
Дата 2.6.2005, 20:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 198
Регистрация: 23.11.2003
Где: Баку, Азербайджан

Репутация: нет
Всего: 1



кнопка немеет, страница перегружается... и данные не передаются smile

М
 

Выписка из правил:
Цитата
13) Если Вы используете цитаты - не сочтите за труд сократить цитируемое место, не следует цитировать несколько страниц текста.



Это сообщение отредактировал(а) Aliance - 2.6.2005, 20:39
PM WWW   Вверх
o.s.a.
Дата 2.6.2005, 20:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Xo4y B MocKBy
**


Профиль
Группа: Участник
Сообщений: 312
Регистрация: 16.2.2005
Где: Ташкент

Репутация: 5
Всего: 15



Рейкин, очень интересно, я еще раз проверил и данные у меня прекрасно передаются,
но теперь я сам не понимаю смысл отключения кнопки: она отключается до отправки формы, но т.к. открывается эта же страница, то теперь кнопка опять работает. Так смысл ее было отключать?

А ты лучше покажи весь свой код и посмотрим, что у тебя там не передается


--------------------
Не могу стоять, пока другие работают, пойду полежу.
PM MAIL ICQ   Вверх
Рейкин
Дата 3.6.2005, 01:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 198
Регистрация: 23.11.2003
Где: Баку, Азербайджан

Репутация: нет
Всего: 1



Цитата
она отключается до отправки формы

это и есть цель. Замечен баг, когда нажимают "бесконечно" на кнопку, не давая странице перегрузиться. А PHP процедуры запускает постоянно. Поэтому шаг вроде один (однажды страница перезагрузилась, а действий десяток.
Блокируя нажатие кнопки повторно я частично решаю проблему.

Цитата
открывается эта же страница, то теперь кнопка опять работает. Так смысл ее было отключать?

чтобы дать возможность сделать новое действие (снова одноразовое).

Без скрипта - страница, ессно работает (перегружается с данными), а со скриптом - пустая страница.
Яссно - буду тестить, но всё же в чём загвоздка?
Я пытался играть с именем для <form> но не помогло.

smile


PM WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1063 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.