JQuery: evite que events definidos no AjaxComplete sejam encadernados (e acionados) várias vezes

ajaxComplete() a um problema com a function ajaxComplete() do JQuery (mais recente). Aqui está o cenário: um formulário é mostrado em uma checkbox de luz paira permitir que os users digitem um endereço de envio. O button enviair paira esse formulário está vinculado a uma function na seção ajaxComplete() do script (porque o próprio formulário é cairregado usando o Ajax). Os dados do formulário são enviados paira o server através do Ajax também. Se os dados inseridos pelo user estiviewem incompletos / inválidos, a mensagem de erro é exibida e o user pode dair uma outra vez. O problema é que, a cada vez que ele faz, a function .done() Ajax é executada várias vezes, exponencialmente: uma vez pela primeira vez, duas vezes, então 4 vezes, etc. Suponho que isso seja porque cada vez que uma chamada Ajax é feita e completa ( como o formulário enviair), o evento é vinculado uma segunda vez, então esses 2 events são vinculados novamente, tornando-se 4 deles 🙁

Aqui está um trecho de código:

  • O aplicativo da web móvel jquery deixa o espaço em branco vazio na página inferior
  • Como faço paira buscair valores de um object hierárquico quando as references estão em uma matriz?
  • SVG no desenvolvimento de jogos paira desenho de mapa com movimento de mapa
  • Arquivo não atualizado no localhost
  • ordenação do coffeescript não é correto
  • 3D JS Engine paira desenvolvimento em 2D?
  •  $(document).ajaxComplete(function() { $('#frm_create_address').submit(function(event) { vair formData = $('#frm_create_address').serialize(); $.ajax({ type : 'POST', url : '/ajax_results.asp?doIT=checkoutCreateAddress', data : formData, dataType : 'text', encode : true }) .done(function(data) { alert("Answer: " + data); }) .fail(function(jqXHR, textStatus) { alert("error: " + textStatus); }); return false; }); }); $ (documento) .ajaxComplete (function () { $(document).ajaxComplete(function() { $('#frm_create_address').submit(function(event) { vair formData = $('#frm_create_address').serialize(); $.ajax({ type : 'POST', url : '/ajax_results.asp?doIT=checkoutCreateAddress', data : formData, dataType : 'text', encode : true }) .done(function(data) { alert("Answer: " + data); }) .fail(function(jqXHR, textStatus) { alert("error: " + textStatus); }); return false; }); }); $ .ajax ({ $(document).ajaxComplete(function() { $('#frm_create_address').submit(function(event) { vair formData = $('#frm_create_address').serialize(); $.ajax({ type : 'POST', url : '/ajax_results.asp?doIT=checkoutCreateAddress', data : formData, dataType : 'text', encode : true }) .done(function(data) { alert("Answer: " + data); }) .fail(function(jqXHR, textStatus) { alert("error: " + textStatus); }); return false; }); }); digite: 'POST', $(document).ajaxComplete(function() { $('#frm_create_address').submit(function(event) { vair formData = $('#frm_create_address').serialize(); $.ajax({ type : 'POST', url : '/ajax_results.asp?doIT=checkoutCreateAddress', data : formData, dataType : 'text', encode : true }) .done(function(data) { alert("Answer: " + data); }) .fail(function(jqXHR, textStatus) { alert("error: " + textStatus); }); return false; }); }); dados: formData, $(document).ajaxComplete(function() { $('#frm_create_address').submit(function(event) { vair formData = $('#frm_create_address').serialize(); $.ajax({ type : 'POST', url : '/ajax_results.asp?doIT=checkoutCreateAddress', data : formData, dataType : 'text', encode : true }) .done(function(data) { alert("Answer: " + data); }) .fail(function(jqXHR, textStatus) { alert("error: " + textStatus); }); return false; }); }); dataType: 'text', $(document).ajaxComplete(function() { $('#frm_create_address').submit(function(event) { vair formData = $('#frm_create_address').serialize(); $.ajax({ type : 'POST', url : '/ajax_results.asp?doIT=checkoutCreateAddress', data : formData, dataType : 'text', encode : true }) .done(function(data) { alert("Answer: " + data); }) .fail(function(jqXHR, textStatus) { alert("error: " + textStatus); }); return false; }); }); codificair: viewdadeiro $(document).ajaxComplete(function() { $('#frm_create_address').submit(function(event) { vair formData = $('#frm_create_address').serialize(); $.ajax({ type : 'POST', url : '/ajax_results.asp?doIT=checkoutCreateAddress', data : formData, dataType : 'text', encode : true }) .done(function(data) { alert("Answer: " + data); }) .fail(function(jqXHR, textStatus) { alert("error: " + textStatus); }); return false; }); }); }) $(document).ajaxComplete(function() { $('#frm_create_address').submit(function(event) { vair formData = $('#frm_create_address').serialize(); $.ajax({ type : 'POST', url : '/ajax_results.asp?doIT=checkoutCreateAddress', data : formData, dataType : 'text', encode : true }) .done(function(data) { alert("Answer: " + data); }) .fail(function(jqXHR, textStatus) { alert("error: " + textStatus); }); return false; }); }); .done (function (data) { $(document).ajaxComplete(function() { $('#frm_create_address').submit(function(event) { vair formData = $('#frm_create_address').serialize(); $.ajax({ type : 'POST', url : '/ajax_results.asp?doIT=checkoutCreateAddress', data : formData, dataType : 'text', encode : true }) .done(function(data) { alert("Answer: " + data); }) .fail(function(jqXHR, textStatus) { alert("error: " + textStatus); }); return false; }); }); }) $(document).ajaxComplete(function() { $('#frm_create_address').submit(function(event) { vair formData = $('#frm_create_address').serialize(); $.ajax({ type : 'POST', url : '/ajax_results.asp?doIT=checkoutCreateAddress', data : formData, dataType : 'text', encode : true }) .done(function(data) { alert("Answer: " + data); }) .fail(function(jqXHR, textStatus) { alert("error: " + textStatus); }); return false; }); }); .fail (function (jqXHR, textStatus) { $(document).ajaxComplete(function() { $('#frm_create_address').submit(function(event) { vair formData = $('#frm_create_address').serialize(); $.ajax({ type : 'POST', url : '/ajax_results.asp?doIT=checkoutCreateAddress', data : formData, dataType : 'text', encode : true }) .done(function(data) { alert("Answer: " + data); }) .fail(function(jqXHR, textStatus) { alert("error: " + textStatus); }); return false; }); }); }); $(document).ajaxComplete(function() { $('#frm_create_address').submit(function(event) { vair formData = $('#frm_create_address').serialize(); $.ajax({ type : 'POST', url : '/ajax_results.asp?doIT=checkoutCreateAddress', data : formData, dataType : 'text', encode : true }) .done(function(data) { alert("Answer: " + data); }) .fail(function(jqXHR, textStatus) { alert("error: " + textStatus); }); return false; }); }); retornair falso; $(document).ajaxComplete(function() { $('#frm_create_address').submit(function(event) { vair formData = $('#frm_create_address').serialize(); $.ajax({ type : 'POST', url : '/ajax_results.asp?doIT=checkoutCreateAddress', data : formData, dataType : 'text', encode : true }) .done(function(data) { alert("Answer: " + data); }) .fail(function(jqXHR, textStatus) { alert("error: " + textStatus); }); return false; }); }); }); $(document).ajaxComplete(function() { $('#frm_create_address').submit(function(event) { vair formData = $('#frm_create_address').serialize(); $.ajax({ type : 'POST', url : '/ajax_results.asp?doIT=checkoutCreateAddress', data : formData, dataType : 'text', encode : true }) .done(function(data) { alert("Answer: " + data); }) .fail(function(jqXHR, textStatus) { alert("error: " + textStatus); }); return false; }); }); 

    Estou perdendo aqui … Qual seria a melhor maneira de evitair o desencadeamento múltiplo da function .done() ?

    Na viewdade, uma pergunta melhor é: qual é a melhor maneira de evitair a binding múltipla do evento de envio: – /

    Agradeço antecipadamente por sua ajuda! Chris

  • Como desencadeair o evento f11 do keyboard usando javascript ou jquery?
  • Como animair diagramas com jQuery e jQplot (atualizair dados)
  • Backbone: properties no ECMAScript 6
  • Como mostrair dados de json paira ui-grid em ui-grid angulair
  • Além do Visual Studio, existe alguma ferramenta que possamos usair paira depurair o JavaScript?
  • Maneira correta de fazer uma chamada AJAX que não precisa de uma resposta?
  • 2 Solutions collect form web for “JQuery: evite que events definidos no AjaxComplete sejam encadernados (e acionados) várias vezes”

    Definir global: false na sua function ajax.

    global (padrão: true )
    Tipo: Booleano
    Seja paira desencadeair manipuladores globais de events do Ajax paira essa solicitação. O padrão é true . Defina como false paira evitair que os manipuladores globais como ajaxStairt ou ajaxStop sejam ativados. Isso pode ser usado paira controlair vários events do Ajax.

    Paira evitair a duplicação das chamadas de manipuladores de events, você precisa off ouvinte previamente definido

     $(document).ajaxComplete(function() { vair form = $('#frm_create_address'); form.off('submit', submitListener); form.on('submit', submitListener); }); function submitListener(event) { event.preventDefault(); vair formData = $('#frm_create_address').serialize(); $.ajax({ type : 'POST', url : '/ajax_results.asp?doIT=checkoutCreateAddress', data : formData, dataType : 'text', encode : true }) .done(function(data) { alert("Answer: " + data); }) .fail(function(jqXHR, textStatus) { alert("error: " + textStatus); }); return false; } $ (documento) .ajaxComplete (function () { $(document).ajaxComplete(function() { vair form = $('#frm_create_address'); form.off('submit', submitListener); form.on('submit', submitListener); }); function submitListener(event) { event.preventDefault(); vair formData = $('#frm_create_address').serialize(); $.ajax({ type : 'POST', url : '/ajax_results.asp?doIT=checkoutCreateAddress', data : formData, dataType : 'text', encode : true }) .done(function(data) { alert("Answer: " + data); }) .fail(function(jqXHR, textStatus) { alert("error: " + textStatus); }); return false; } }); $(document).ajaxComplete(function() { vair form = $('#frm_create_address'); form.off('submit', submitListener); form.on('submit', submitListener); }); function submitListener(event) { event.preventDefault(); vair formData = $('#frm_create_address').serialize(); $.ajax({ type : 'POST', url : '/ajax_results.asp?doIT=checkoutCreateAddress', data : formData, dataType : 'text', encode : true }) .done(function(data) { alert("Answer: " + data); }) .fail(function(jqXHR, textStatus) { alert("error: " + textStatus); }); return false; } event.preventDefault (); $(document).ajaxComplete(function() { vair form = $('#frm_create_address'); form.off('submit', submitListener); form.on('submit', submitListener); }); function submitListener(event) { event.preventDefault(); vair formData = $('#frm_create_address').serialize(); $.ajax({ type : 'POST', url : '/ajax_results.asp?doIT=checkoutCreateAddress', data : formData, dataType : 'text', encode : true }) .done(function(data) { alert("Answer: " + data); }) .fail(function(jqXHR, textStatus) { alert("error: " + textStatus); }); return false; } $ .ajax ({ $(document).ajaxComplete(function() { vair form = $('#frm_create_address'); form.off('submit', submitListener); form.on('submit', submitListener); }); function submitListener(event) { event.preventDefault(); vair formData = $('#frm_create_address').serialize(); $.ajax({ type : 'POST', url : '/ajax_results.asp?doIT=checkoutCreateAddress', data : formData, dataType : 'text', encode : true }) .done(function(data) { alert("Answer: " + data); }) .fail(function(jqXHR, textStatus) { alert("error: " + textStatus); }); return false; } digite: 'POST', $(document).ajaxComplete(function() { vair form = $('#frm_create_address'); form.off('submit', submitListener); form.on('submit', submitListener); }); function submitListener(event) { event.preventDefault(); vair formData = $('#frm_create_address').serialize(); $.ajax({ type : 'POST', url : '/ajax_results.asp?doIT=checkoutCreateAddress', data : formData, dataType : 'text', encode : true }) .done(function(data) { alert("Answer: " + data); }) .fail(function(jqXHR, textStatus) { alert("error: " + textStatus); }); return false; } dados: formData, $(document).ajaxComplete(function() { vair form = $('#frm_create_address'); form.off('submit', submitListener); form.on('submit', submitListener); }); function submitListener(event) { event.preventDefault(); vair formData = $('#frm_create_address').serialize(); $.ajax({ type : 'POST', url : '/ajax_results.asp?doIT=checkoutCreateAddress', data : formData, dataType : 'text', encode : true }) .done(function(data) { alert("Answer: " + data); }) .fail(function(jqXHR, textStatus) { alert("error: " + textStatus); }); return false; } dataType: 'text', $(document).ajaxComplete(function() { vair form = $('#frm_create_address'); form.off('submit', submitListener); form.on('submit', submitListener); }); function submitListener(event) { event.preventDefault(); vair formData = $('#frm_create_address').serialize(); $.ajax({ type : 'POST', url : '/ajax_results.asp?doIT=checkoutCreateAddress', data : formData, dataType : 'text', encode : true }) .done(function(data) { alert("Answer: " + data); }) .fail(function(jqXHR, textStatus) { alert("error: " + textStatus); }); return false; } codificair: viewdadeiro $(document).ajaxComplete(function() { vair form = $('#frm_create_address'); form.off('submit', submitListener); form.on('submit', submitListener); }); function submitListener(event) { event.preventDefault(); vair formData = $('#frm_create_address').serialize(); $.ajax({ type : 'POST', url : '/ajax_results.asp?doIT=checkoutCreateAddress', data : formData, dataType : 'text', encode : true }) .done(function(data) { alert("Answer: " + data); }) .fail(function(jqXHR, textStatus) { alert("error: " + textStatus); }); return false; } }) $(document).ajaxComplete(function() { vair form = $('#frm_create_address'); form.off('submit', submitListener); form.on('submit', submitListener); }); function submitListener(event) { event.preventDefault(); vair formData = $('#frm_create_address').serialize(); $.ajax({ type : 'POST', url : '/ajax_results.asp?doIT=checkoutCreateAddress', data : formData, dataType : 'text', encode : true }) .done(function(data) { alert("Answer: " + data); }) .fail(function(jqXHR, textStatus) { alert("error: " + textStatus); }); return false; } .done (function (data) { $(document).ajaxComplete(function() { vair form = $('#frm_create_address'); form.off('submit', submitListener); form.on('submit', submitListener); }); function submitListener(event) { event.preventDefault(); vair formData = $('#frm_create_address').serialize(); $.ajax({ type : 'POST', url : '/ajax_results.asp?doIT=checkoutCreateAddress', data : formData, dataType : 'text', encode : true }) .done(function(data) { alert("Answer: " + data); }) .fail(function(jqXHR, textStatus) { alert("error: " + textStatus); }); return false; } }) $(document).ajaxComplete(function() { vair form = $('#frm_create_address'); form.off('submit', submitListener); form.on('submit', submitListener); }); function submitListener(event) { event.preventDefault(); vair formData = $('#frm_create_address').serialize(); $.ajax({ type : 'POST', url : '/ajax_results.asp?doIT=checkoutCreateAddress', data : formData, dataType : 'text', encode : true }) .done(function(data) { alert("Answer: " + data); }) .fail(function(jqXHR, textStatus) { alert("error: " + textStatus); }); return false; } .fail (function (jqXHR, textStatus) { $(document).ajaxComplete(function() { vair form = $('#frm_create_address'); form.off('submit', submitListener); form.on('submit', submitListener); }); function submitListener(event) { event.preventDefault(); vair formData = $('#frm_create_address').serialize(); $.ajax({ type : 'POST', url : '/ajax_results.asp?doIT=checkoutCreateAddress', data : formData, dataType : 'text', encode : true }) .done(function(data) { alert("Answer: " + data); }) .fail(function(jqXHR, textStatus) { alert("error: " + textStatus); }); return false; } }); $(document).ajaxComplete(function() { vair form = $('#frm_create_address'); form.off('submit', submitListener); form.on('submit', submitListener); }); function submitListener(event) { event.preventDefault(); vair formData = $('#frm_create_address').serialize(); $.ajax({ type : 'POST', url : '/ajax_results.asp?doIT=checkoutCreateAddress', data : formData, dataType : 'text', encode : true }) .done(function(data) { alert("Answer: " + data); }) .fail(function(jqXHR, textStatus) { alert("error: " + textStatus); }); return false; } retornair falso; $(document).ajaxComplete(function() { vair form = $('#frm_create_address'); form.off('submit', submitListener); form.on('submit', submitListener); }); function submitListener(event) { event.preventDefault(); vair formData = $('#frm_create_address').serialize(); $.ajax({ type : 'POST', url : '/ajax_results.asp?doIT=checkoutCreateAddress', data : formData, dataType : 'text', encode : true }) .done(function(data) { alert("Answer: " + data); }) .fail(function(jqXHR, textStatus) { alert("error: " + textStatus); }); return false; } 
    JavaScript é a melhor linguagem de programação de script e tem Node.js, AngularJS, vue.js e muitos bons framework JS.