2016-05-18 1 views
0

У меня возникли проблемы с тем, чтобы моя функция работала правильно. На самом деле у меня есть две проблемы. 1) Иногда скрипт добавляет только 1 из 7 форм. 2) При обновлении страницы моя другая функция вызывается для каждой формы, представленной вместо одного раза.Функция отправки и запуска нескольких динамических форм после

У меня есть код, который создает форму (ы), если, например, пользователь нажимает кнопку.

var pp_total_change = function(){ 
.. .... . 
    $('.pp_count').each(function(){ 
    ......... 
    pp_total_list_items += "<li><form action='cart/add/"+$(this).attr("labelid")+"' method='post' id='form_"+$(this).attr("labelid")+"'><span>"+$(this).attr("labelname")+"</span><span class='amt'>"+$(this).val()+"</span><span>&euro; "+pp_total_price.toString().slice(0,-2)+","+pp_total_price.toString().slice(-2)+"</span></form></li>"; 

// which results in -> 
<form id="form_51847052" method="post" action="cart/add/51847052">...text...</form> 
<form id="form_51847053" method="post" action="cart/add/51847053">...text...</form> 
<form id="form_51847054" method="post" action="cart/add/51847054">...text...</form> 
etc... 

Тогда функция представления форм

$('.temp-cart .addToCart').bind('click',function(){ 
     $('.temp-cart form').each(function(){ 
      var qty = $(this).find('.amt').text(); 
      var qty2 = parseInt(qty); 
      var url = $(this).attr('action')+'/?quantity='+qty2+'/'; 

      $.ajax({ 
      url: url, 
      type: "post", 
      data: $(this).serialize(), 
      success: function(response, textStatus, jqXHR) {}, 
      error: function(jqXHR, textStatus, errorThrown) {}, 
      complete: function() { 
       updateStuff(); 
      } 
      }); 
     }); 

Тогда функция updateStuff(), что нужно уволят один раз, когда все формы сделаны представления.

function updateStuff(){ 
     updateCartAjax(); 
     $('.order .pp_count, .pp_countsum .pp_count').val(0); 
     $('.order .submit').popover('destroy').button('reset').animate({'opacity':'1'},200); 
     $("html,body").stop(true, true).animate({scrollTop: 0}, 333); 
     $(".pp_count").val('0'); 
     $("#pp_order_total ul li").remove(); 
     $("#pp_order_total ul").text('U heeft hiernaast nog geen producten geselecteerd.'); 
     } 

Так что проблема я столкнулся в том, что, когда пользователи «создает», например, 7 форм, то только один из этих 7 форм представляются. Когда я нажимаю кнопку отправки второй раз, все формы отправляются. Я думал, что это что-то общее с id, но это было не так.

Во-вторых, как я могу запустить функцию updateStuff только один раз после отправки всех форм?

Любая помощь очень ценится ...

ответ

1
function deploy(){ 
    return new Promise(function(resolve,reject){ 
     var count= $('.temp-cart form').length; 
     $('.temp-cart form').each(function(){ 
      var qty = $(this).find('.amt').text(); 
      var qty2 = parseInt(qty); 
      var url = $(this).attr('action')+'/?quantity='+qty2+'/'; 

      $.ajax({ 
       url: url, 
       type: "post", 
       data: $(this).serialize(), 
       success: function(response, textStatus, jqXHR) {}, 
       error: function(jqXHR, textStatus, errorThrown) {}, 
       complete: function() { 
        count--; 
        if(count==0) 
         resolve(); 
       } 
      }); 
     }); 
    }); 
} 
$('.temp-cart .addToCart').bind('click',function(){ 
    deploy().then(function(){ 
     updateStuff(); 
    }) 
} 
+0

Это похоже на работу (вы пропустили скобку в конце)! Thx ... У вас также есть вклад для «проблемы 1»? Это все еще не работает. – Meules

+0

Это проблема времени выполнения, требуется debug.Determine count '$ ('. Temp-cart form ')', когда вы нажимаете. –

+0

Можете ли вы объяснить немного больше, пожалуйста? Если вам нравится, у меня есть тестовый сайт [здесь] (http://webdingetest.webshopapp.com/pvc-afzuigslang-en-of-vijverslang.html) с полным скриптом функционирования. Я не вижу, как подсчет форм поможет в отправке их 1 на 1 ... – Meules

Смежные вопросы