Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Jquery многократно отправляет данные
Kuliev  
 ۩  [x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Скорая помощь новичку
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 1508
Пользователь №: 17179
На форуме: 7 лет, 8 месяцев, 20 дней
Карма: 24




Доброго времени суток форумчане, столкнулся с такой проблемой.

Есть модальное окно с select. Есть табличка в ячейки которой есть ссылка при клики на которую всплывает модальное окно с формой. Далее выбираю нужное мне значение происходит событие change. В консоле вижу, что при первом change все происходит в штатном режиме, при втором, выполняется уже два раза change при следующем еще прибавляется.

Я хочу использовать Ajax но в итоге получается что отправляются сразу несколько запросов.

Вот код:
 $(document).ready(function() {

//Кликаем по ссылке
$('.std').on('click', function(e){
e.preventDefault();

//Получаем данные атрибута data
var id = $(this).attr('data-id');

//Показываем модальное окно с формой
$('#addEvent').modal('show');

//Отлавливаем событие change
$('#sel').on('change',function(){

//Получаем выбраный option из списка
var stat = $('#sel :selected').val();
console.log(stat);

//Очищаем select, скрываем форму
setTimeout(function(){
$('#sel').val('');
$('#addEvent').modal('hide');

}, 1500);

})
});

});


Подскажите кто знает почему так происходит.


Присоединённое изображение
Присоединённое изображение
PMПисьмо на e-mail пользователюICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
T1grOK  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2703
Пользователь №: 24406
На форуме: 6 лет, 1 месяц, 21 день
Карма: 170




Так ведь сами же указали, что при каждом клике нужно навесить событие change
//Отлавливаем событие change 
$('#sel').on('change',function(){

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


--------------------
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Kuliev  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Скорая помощь новичку
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 1508
Пользователь №: 17179
На форуме: 7 лет, 8 месяцев, 20 дней
Карма: 24




Цитата (T1grOK @ 14.10.2016 - 09:57)
Так ведь сами же указали, что при каждом клике нужно навесить событие change
//Отлавливаем событие change 
$('#sel').on('change',function(){

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

Я и так и так пробовал, результат один и тотже!

Я использую bootstrap 3 и его модальное окно. Как я сейчас заметил, если я открываю модальное окно и потом закрываю не осуществляя события change то, когда я выбираю нужный элемент то change срабатывает ровно столько сколько раз было открыто модальное окно.

Как я понимаю, нужно как-то обнулить счетчик показов окна возможно я не прав.

В документации у bootstrap по modal ничего особенного нет.
PMПисьмо на e-mail пользователюICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Kuliev  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Скорая помощь новичку
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 1508
Пользователь №: 17179
На форуме: 7 лет, 8 месяцев, 20 дней
Карма: 24




Спасибо всем, решил вопрос, но осадок остался...

В общем разделил логику скрипта, вынес событие change отдельно от тела вызова модального окна.

$(document).ready(function() {

//Кликаем по ссылке
$('.std').click(function(e){
e.preventDefault();

//Получаем данные атрибута data
var id = $(this).attr('data-id');

//Показываем модальное окно с формой
$('#addEvent').modal('show');

});

//Отлавливаем событие change
$('#sel').change(function(){

//Получаем выбраный option из списка
var stat = $('#sel :selected').val();
console.log(stat);

//Очищаем select, скрываем форму
setTimeout(function(){
$('#sel').val('');
$('#addEvent').modal('hide');
}, 1500);

})

});


Теперь все работает как надо )
PMПисьмо на e-mail пользователюICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
sergeiss  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Сидел он, дум великих полон - и вдаль глядел
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 14974
Пользователь №: 4190
На форуме: 8 лет, 10 месяцев, 1 день
Карма: 443




Цитата (Kuliev @ 14.10.2016 - 10:35)
вынес событие change отдельно от тела вызова модального окна.

Да, в данном случае это единственное правильное решение.

PS. Перенес тему в раздел jQuery.

Это сообщение отредактировал sergeiss - 14.10.2016 - 11:47


--------------------
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
PMICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Ответ в темуСоздание новой темыСоздание опроса