• 08-04-2024, 18:53:50
    #1
    Kimlik doğrulama veya yönetimden onay bekliyor.
    sıralı seçersem doğru hesaplıyor ama geri dönüp bir değeri değiştirirsem hesaplamıyor. Yardımcı olabilir misiniz?


    kod burada..
    https://codepen.io/ARAS-_FB/pen/LYveNje
  • 08-04-2024, 19:28:06
    #2
    Kimlik doğrulama veya yönetimden onay bekliyor.
    aras00fb adlı üyeden alıntı: mesajı görüntüle
    sıralı seçersem doğru hesaplıyor ama geri dönüp bir değeri değiştirirsem hesaplamıyor. Yardımcı olabilir misiniz?


    kod burada..
    https://codepen.io/ARAS-_FB/pen/LYveNje
    Selamlar.

    Sıralı olarak yaptığımızda düzelten kod :

    var taxRate = 0.2; 
    var fadeTime = 300;
    
    
    
    $('.mesafe input').change( function() {
      updatemesafe(this);
    });
    $('.sefer input').change( function() {
      updatesefer(this);
    });
    
    
    
    function recalculateCart()
    {
      var subtotal = 0;
      
    
      $('.satır').each(function () {
        subtotal += parseFloat($(this).children('.günlük').text());
      });
      
    
      var tax = subtotal * taxRate;
      var total = subtotal + tax;
      
    
      $('.totals-value').fadeOut(fadeTime, function() {
        $('#cart-subtotal').html(subtotal.toFixed(2));
        $('#cart-tax').html(tax.toFixed(2));
        $('#cart-total').html(total.toFixed(2));
        if(total == 0){
          $('.checkout').fadeOut(fadeTime);
        }else{
          $('.checkout').fadeIn(fadeTime);
        }
        $('.totals-value').fadeIn(fadeTime);
      });
    }
    
    
    
    function updatemesafe(mesafeInput)
    {
    
      var satırRow = $(mesafeInput).parent().parent();
      var birim = parseFloat(satırRow.children('.birim').text());
      var mesafe = $(mesafeInput).val() || 0;
      var tekyön = birim * mesafe;
      
    
      satırRow.children('.tekyön').each(function () {
        $(this).fadeOut(fadeTime, function() {
          $(this).text(tekyön.toFixed(2));
          // Birim fiyatını tekrar hesapla
          hesaplaBirim(satırRow);
          recalculateCart();
          $(this).fadeIn(fadeTime);
        });
      });  
    }
    
    
    function updatesefer(seferInput)
    {
    
      var satırRow = $(seferInput).parent().parent();
      var tekyön = parseFloat(satırRow.children('.tekyön').text());
      var sefer = $(seferInput).val() || 0;
      var günlük = tekyön * sefer;
      
    
      satırRow.children('.günlük').each(function () {
        $(this).fadeOut(fadeTime, function() {
          $(this).text(günlük.toFixed(2));
    
          hesaplaBirim(satırRow); 
          recalculateCart();
          $(this).fadeIn(fadeTime);
        });
      });  
    }
    
    
    function hesaplaBirim($parent) {
      var bölgetotal = parseInt($parent.find('#bölge option:selected').attr('tutar')) || 0; 
      var kapasitetotal = parseInt($parent.find('#kapasite option:selected').attr('tutar')) || 0;
      var markatotal = parseInt($parent.find('#marka option:selected').attr('tutar')) || 0;
      var modeltotal = parseInt($parent.find('#model option:selected').attr('tutar')) || 0;
      var saattotal = parseInt($parent.find('#saat option:selected').attr('tutar')) || 0;
      birim = bölgetotal + kapasitetotal + markatotal + modeltotal + saattotal;
      $parent.find('.birim').html(birim);
    }
     
    $('#bölge, #kapasite, #marka, #model, #saat').change(function() {
      hesaplaBirim($(this).parents(".satır"));
    });
    Resim için : https://ibb.co/z7RNsS0

    Bu kodda, sıralı işlem yapmadan fiyatlara yansıtır :

    var taxRate = 0.2;
    var fadeTime = 300;
    
    
    $('.mesafe input, .sefer input').change(function() {
      updateValues(this);
    });
    
    
    function recalculateCart() {
      var subtotal = 0;
    
    
      $('.satır').each(function() {
        subtotal += parseFloat($(this).children('.günlük').text());
      });
    
    
      var tax = subtotal * taxRate;
      var total = subtotal + tax;
    
    
      $('.totals-value').fadeOut(fadeTime, function() {
        $('#cart-subtotal').html(subtotal.toFixed(2));
        $('#cart-tax').html(tax.toFixed(2));
        $('#cart-total').html(total.toFixed(2));
        if (total == 0) {
          $('.checkout').fadeOut(fadeTime);
        } else {
          $('.checkout').fadeIn(fadeTime);
        }
        $('.totals-value').fadeIn(fadeTime);
      });
    }
    
    
    function updateValues(inputElement) {
      var satırRow = $(inputElement).parent().parent();
      var birim = parseFloat(satırRow.children('.birim').text());
      var mesafe = satırRow.find('.mesafe input').val() || 0;
      var sefer = satırRow.find('.sefer input').val() || 0;
      var tekyön = birim * mesafe;
      var günlük = tekyön * sefer;
    
    
      satırRow.children('.tekyön').fadeOut(fadeTime, function() {
        $(this).text(tekyön.toFixed(2));
        $(this).fadeIn(fadeTime);
      });
      satırRow.children('.günlük').fadeOut(fadeTime, function() {
        $(this).text(günlük.toFixed(2));
        $(this).fadeIn(fadeTime);
      });
    
    
      hesaplaBirim(satırRow);
      recalculateCart();
    }
    
    
    function hesaplaBirim($parent) {
      var bölgetotal = parseInt($parent.find('#bölge option:selected').attr('tutar')) || 0;
      var kapasitetotal = parseInt($parent.find('#kapasite option:selected').attr('tutar')) || 0;
      var markatotal = parseInt($parent.find('#marka option:selected').attr('tutar')) || 0;
      var modeltotal = parseInt($parent.find('#model option:selected').attr('tutar')) || 0;
      var saattotal = parseInt($parent.find('#saat option:selected').attr('tutar')) || 0;
      birim = bölgetotal + kapasitetotal + markatotal + modeltotal + saattotal;
      $parent.find('.birim').html(birim);
    }
    
    $('#bölge, #kapasite, #marka, #model, #saat').change(function() {
      hesaplaBirim($(this).parents(".satır"));
    });
    Problem devam ederse yazabilirsiniz.
    Anakoddaki problem updatemesafe/sefer fonksiyonlarına hesaplamayı eklememişsiniz.

    Sevgiler.
  • 08-04-2024, 19:35:27
    #3
    bir hata oluşmuş yanlış topluyor.
  • 08-04-2024, 21:41:24
    #4
    aras00fb adlı üyeden alıntı: mesajı görüntüle
    bir hata oluşmuş yanlış topluyor.
    satırRow.children('.günlük').each(function () {

    bu kısmı bu şekilde değiştirdim düzeldi.

    @Sinyor_Ridak desteğin için teşekkürler..