Форум программистов, компьютерный форум, киберфорум
jQuery
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
 Аватар для TrustNo1
78 / 78 / 35
Регистрация: 08.09.2013
Сообщений: 397

Как удалить данные формы из памяти?

21.01.2018, 23:41. Показов 1733. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
По клику на кнопку класса .moderation_btn срабатывает отправка формы без перезагрузки страницы:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<script>
$(document).ready(function() {
    $(document).on('click', '.moderation_btn', function(e) {
        var d = $(this).attr('id');
        var form_name = '#'  + 'vote' + d;
 
        $(form_name).on('submit', function() {
            var vals = $(this).serialize();
                    
            $.ajax({
                type: $(this).attr('method'),
                url: $(this).attr('action'),
                data: vals,
                success: function(data) {
                }
            });
            return false;
        });
    });
});
</script>
Если нажать на кнопку еще раз, то отправятся те же данные только 2 раза.
Если еще раз нажать, то три раза и тд.

Почему так происходит?
Как починить?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.01.2018, 23:41
Ответы с готовыми решениями:

Как удалить лишние данные из оперативной памяти?
Здравствуйте. Имеется вот такой код, вернее часть него: if( GetKeyState(32) &amp; 0x8000 ) { hdc = GetDC(hWnd); hBitmap =...

Как удалить данные с формы при закрытии?
На форме есть Timage, на котором рисуется картинка, как сделать так чтобы при закрытии формы рисунок уничтожался?

Как удалить одну из процедур формы из другой процедуры той же формы
Еще раз доброго здравия... Слышал, что подобное можно делать... То есть вообще можно так сказать реформировать код самим же кодом... Но мне...

14
 Аватар для sash23
563 / 410 / 259
Регистрация: 31.05.2016
Сообщений: 1,105
21.01.2018, 23:49
сохраните где-нибудь флаг например isSent=false
после отправки isSent=true
и перед отправкой проверяйте по флагу была ли отправка или нет.
кроме того после отправки кнопку можно сделать не активной т.е. disabled.
0
 Аватар для TrustNo1
78 / 78 / 35
Регистрация: 08.09.2013
Сообщений: 397
22.01.2018, 00:38  [ТС]
Цитата Сообщение от sash23 Посмотреть сообщение
кроме того после отправки кнопку можно сделать не активной т.е. disabled.
А если мне нужно, чтобы кнопка была активна?

Есть две кнопку "принять" и отклонить". Если пользователь нажал не ту, что нужно, он может кликнуть еще раз на другую.
Как в этом случае сделать, чтобы данные не дублировались?
0
 Аватар для sash23
563 / 410 / 259
Регистрация: 31.05.2016
Сообщений: 1,105
22.01.2018, 01:27
Сложно сказать. Вы бы описали задачу подробнее. А то нифига не понятно что требуется.
0
 Аватар для TrustNo1
78 / 78 / 35
Регистрация: 08.09.2013
Сообщений: 397
22.01.2018, 02:09  [ТС]
Цитата Сообщение от sash23 Посмотреть сообщение
Сложно сказать. Вы бы описали задачу подробнее. А то нифига не понятно что требуется.
1. Есть форма в которой пользователь может выбрать либо "принять", либо "отклонить".
2. Допустим пользователь нажимает на кнопку "принять" и ajax отправляет запрос php скрипту.
3. Тут вдруг пользователь передумал, и решил, что все таки стоит "отклонить".
4. Он нажимает на кнопку "отклонить" и мой скрипт js отправляет форму дважды (в логах видно, и в базе данных добавляются две новые строки)
5. Если тут пользователь опять решит, что все же стоило нажать кнопку "принять", то в этот раз данные отправляются скриптом уже трижды. И в базе появляются три новые строки.

Вопрос. Как сделать так, чтобы пользователь мог неограниченное количество раз тыкать по этим кнопочкам, и каждый раз форма отправлялась только один раз?
0
 Аватар для Lazy_Den
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
22.01.2018, 02:18
TrustNo1, дайте-ка я догадаюсь... У вас кнопка с классом "moderation_btn" расположена в форме?
0
 Аватар для TrustNo1
78 / 78 / 35
Регистрация: 08.09.2013
Сообщений: 397
22.01.2018, 02:22  [ТС]
Цитата Сообщение от Lazy_Den Посмотреть сообщение
дайте-ка я догадаюсь... У вас кнопка с классом "moderation_btn" расположена в форме?
Угу:

HTML5
1
2
3
4
5
6
        <form method="POST" action="script_actions.php" id="vote'.$row['video_id'].'">
            <input type="hidden" name="moderate" value="2">
            <input type="hidden" name="id" value="'.$row['video_id'].'">
            <input type="hidden" name="action_type" value="moderate_video">
            <input type="submit" name="submit" value="Accept" id="'.$row['video_id'].'" class="moderation_btn">
            </form>
0
 Аватар для Lazy_Den
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
22.01.2018, 02:25
Лучший ответ Сообщение было отмечено TrustNo1 как решение

Решение

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$(function() {
    $(document).on('submit', 'form[id^=vote]', function(e) {
        e.preventDefault();
        let $that = $(this);
        $.ajax({
            type: $that.attr('method'),
            url: $that.attr('action'),
            data: $that.serialize(),
            success: function(data) {
            
            }
        });
 
    });
});
Добавлено через 1 минуту
При каждом клике на кнопку, у вас добавлялся плюс еще один обработчик на событие submit для текущей формы.
0
 Аватар для TrustNo1
78 / 78 / 35
Регистрация: 08.09.2013
Сообщений: 397
22.01.2018, 02:39  [ТС]
Цитата Сообщение от Lazy_Den Посмотреть сообщение
При каждом клике на кнопку, у вас добавлялся плюс еще один обработчик на событие submit для текущей формы.
Спасибо! Это помогло
0
 Аватар для Lazy_Den
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
22.01.2018, 02:43
Цитата Сообщение от TrustNo1 Посмотреть сообщение
Спасибо!
Не за что, но вы хоть поняли причину неправильного поведения вашего кода?
0
 Аватар для TrustNo1
78 / 78 / 35
Регистрация: 08.09.2013
Сообщений: 397
22.01.2018, 02:54  [ТС]
Цитата Сообщение от Lazy_Den Посмотреть сообщение
Не за что, но вы хоть поняли причину неправильного поведения вашего кода?
Не понимаю пока что. Объясните, пожалуйста, что происходит пошагово.

И еще мне интересно вот что:
JavaScript
1
2
 e.preventDefault(); // этим мы отключаем стандартную обработку событий браузером
  var $that = $(this); // а тут что и зачем мы помещаем в переменную? почему нельзя использовать $(this).attr('method'),
0
 Аватар для Lazy_Den
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
22.01.2018, 03:04
TrustNo1, в JS есть возможность установить несколько обработчиков на одно и то же событие элемента. Пример в песочнице.
JavaScript
1
2
3
4
5
6
7
8
9
$(document).on('submit', 'form', function(e) {
    // Одно действие
});
$(document).on('submit', 'form', function(e) {
    // Второе действие
});
$(document).on('submit', 'form', function() {
    // Третье действие
});
Каждый обработчик, если нет остановки цепочки вызова событий (event.stopImmediatePropagation()), отработает, что собственно, вы можете наблюдать в консоли из примера в песочнице. Код выше прописан руками, а в вашем случае, вы добавляли обработчики программно в callback-функции, срабатывающей при клике на кнопку (арифметическая прогрессия).
Цитата Сообщение от TrustNo1 Посмотреть сообщение
этим мы отключаем стандартную обработку событий браузером
Да. Но return false так же можно использовать.
Цитата Сообщение от TrustNo1 Посмотреть сообщение
зачем мы помещаем в переменную?
Кеширование. Не будем лишний раз вызывать метод $(). Кстати, $ - это не что иное, как имя функции.
1
 Аватар для brain-4-me
162 / 150 / 97
Регистрация: 24.12.2013
Сообщений: 744
Записей в блоге: 12
22.01.2018, 06:45
Lazy_Den,

вопрос не по теме, вот эта вот запись
Цитата Сообщение от Lazy_Den Посмотреть сообщение
form[id^=vote]
означает что id начинается с vote ? такая типа мини регулярка? Не видел таких записей раньше
0
98 / 101 / 30
Регистрация: 21.10.2012
Сообщений: 320
22.01.2018, 10:30
Цитата Сообщение от brain-4-me Посмотреть сообщение
означает что id начинается с vote ?
Так и есть.
1
 Аватар для Lazy_Den
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
22.01.2018, 11:42
Цитата Сообщение от brain-4-me Посмотреть сообщение
такая типа мини регулярка?
Можно и так сказать. Хотя, это стандартный селектор CSS
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.01.2018, 11:42
Помогаю со студенческими работами здесь

Как из TextBoxа одной формы скопировать введённые данные в TextBox другой формы?
Здравствуйте. Помогите с вопросом, как из TextBoxа одной формы скопировать введённые данные в TextBox другой формы.Большое спасибо.

Как передать данные из DataGridVew 1 формы в текстовые боксы 2 формы используя щелчок по гридвью
Привет друзья. Подскажите как решить данную проблему

Как передать в метод формы данные из другой формы?
Народ, подскажите юзеру: создал на Visual C++ 2005 с помощью designer'а Form1 с единственной кнопкой на ней. Вызываю по нажатию этой...

Как при отправке формы из модалки дописывать в data нужные данные из первой формы и отправлять?
Добрый вечер, всем! Есть две формы... в одну вводим вопрос от пользователя, во второй пользователь оставляет свои контакты и выполняет...

Как передать данные из одной формы другой, если формы вызываються через MDI форму?
Я создал MDI форму для которой добавил две toolstrip button вызывающие форму1 и форму2 внутри MDI формы. Форма1 служит для ввода данных....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru