Jquery многократно отправляет данные
Вложений: 1
Есть модальное окно с 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); }) }); }); http://javascript.ru/forum/attachmen...d=147642841 1 Подскажите кто знает почему так происходит. |
В месте где очищается select, допишите stat = ''; return stat;
|
Спасибо за ответ.
Я использую bootstrap 3 и его модальное окно. Как я сейчас заметил, если я открываю модальное окно и потом закрываю не осуществляя события change то, когда я выбираю нужный элемент то change срабатывает ровно столько сколько раз было открыто модальное окно. Как я понимаю, нужно как-то обнулить счетчик показов окна возможно я не прав. В документации у bootstrap по modal ничего особенного нет. |
Спасибо всем, решил вопрос, но осадок остался...
В общем разделил логику скрипта, вынес событие 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); }) }); Теперь все работает как надо ) |
я зарегался на этом форуме только для того чтобы сказать тебе спасибо.
Сэкономил мне пару часов времени кучу нервов |
Часовой пояс GMT +3, время: 01:54. |