повторное нажатие сабмит
20 февраля 2008 в 23:21
в друпале нет защиты от повторного нажатия конпки сабмит в результате много раз можно постить одно и тоже
как решить проблему кто знает
- Блог
- Войдите или зарегистрируйтесь, чтобы отправлять комментарии
Комментарии
ооо, меня эта проблема в свое время достала жутко. нашел решение где-то на .орге.
короче вот такое короткий скрипт на ява-скрипте.
$('input[type=submit]').click(function() {
$(this).siblings('input[type=submit]').hide();
$(this).hide();
$('<p class="loading">Ok...</p>').insertAfter(this).slideDown('fast');
})
});
вставьте его в конец страницы и будет вам счастье.
Суть работы: при нажатии на кнопку САБМИТ все кнопки исчезают и нажать их повторно нельзя Посмотреть в действии можно на моем сайте.
интересное решение
Я встречал модуль для этого: Form single,
но решение с отключением кнопок мне кажется более элегантным и простым.
Prevent multiple form processing: causing duplication of nodes/users - обсуждение проблемы на английском. Ошибка исправлена в Д6 и есть порт для Д5 (в самом конце статьи)...
Решение было сохранено на сайте DrupalCookBook.ru:
Защита от повторного сохранения форм.
Авторы, предложившие решения, также указаны в сохранённой статье.
а в какую именно страницу нужно вставлиять?
в node.tpl?
у меня есть отдельный файл для яваскриптов, который я подключаю в template.php
понял, спасибо
Запихнул код в page.tpl
Кнопки пропадают
Остался вопрос, а как сделана у Вас эта полоска (полосатая) ?
чтобы пользователь понимал, что "процесс идет"
через цсс
background:transparent url(/sites/all/themes/liveang/ajax-loader1.gif) no-repeat scroll 0% 50%;
color:blue;
font-weight:bold;
height:30px;
padding-left:35px;
padding-top:10px;
width:60px;
}
и еще где-нибудь на странице нужно вставить этот рисунок бегунка размером 1х1, чтобы он был прогружен браузером, т.к. не все браузеры грузят картинки после нажатия сабмита
и кстати, я исправил оригинальный код, так как он был неполным, а суть в том, что у появившего текста появляется цсс-класс loading - исправьте пожалуйста у себя
спасибо, попробую
u
У меня после нажатия, картинка отображается, но не проигрывается. Это баг такой у броузера?
Смотрел под IE7
Да, у IE есть такое
у данного решения есть баг, к сожалению
Продвинутые люди нажимают enter при автодобавлении. А наша автоскрываемая кнопка сабмит принимает это как сигнал "все, шухер, прячуюсь) и бедный пользователь даже зарегиться не может
Есть вариант пихать скрипт только в файл node.tpl
автозаполнение - оно ведь при заполнении тегов к материалам присутствует
Проверил сейчас автозаполнение по enter'у. Кнопка не срабатывает
Проверю
Был модуль под шестерку, который блокирует повторный сабмит формы...
Увы не вспомню где видел даже.
Ну просто нужно добавить в этот скрипт обработку события нажатия клавиши "Энтер"
switch (event.keyCode) {
// ...
// тут вычислить код клавиши
// если код равен коду "Enter"
// то аналогичные действия
// ...
}
});
этот скрипт выводить в блоке только на странице /node/add*
в разных браузерах разные коды клавиш. См. http://unixpapa.com/js/key.html