При разработке javascript корзины заказов на сайт, столкнулся с многократной отправкой запросов по нажатию по кнопке с событием bind.
Условие при которых это происходило:
- многократный рендеринг всплывающего окна на JS.
- поведение элементов окна программируется на jquery с использованием ajax-запросов getJSON.
Как побеждали:
Добавления e.preventDefault() отсекло Chrome, Opera, Firefox (стал генерироваться только один запрос). Но проблема оставалась с IE и Safari.
Оказывается каждый раз обработчик кнопки добавлялся к существующему при отрисовке (подгрузке всплывающего окна), а его надо отчищать от события чтоб избежать наслоения с помощью bind — unbind, для live — die.
Делать это можно каждый раз перед определением обработчика.
$('#submit-form').unbind('click'); $('#submit-form').bind('click', function(e){ BootCart.processing(); - - - - - - ...... e.preventDefault(); }
Так работает нормально
Комментарии
Открыть систему комментариев