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, время: 14:19. |