<script> document.addEventListener("DOMContentLoaded", function () { // 'toplam-fiyati' inputlarının değişikliklerini takip et const toplamFiyatiInputs = document.querySelectorAll("input[name='toplam-fiyati']"); toplamFiyatiInputs.forEach(input => { input.addEventListener('input', function () { hesaplaAraToplam(); // Ara toplamı güncelle hesaplaGenelToplam(); // Genel toplamı güncelle }); }); // Toplu iskonto inputu için değişim kontrolü const discountValueInput = document.getElementById("discountValue"); // İskonto değeri inputu if (discountValueInput) { discountValueInput.addEventListener('input', function () { hesaplaAraToplam(); // Ara toplamı güncelle hesaplaGenelToplam(); // Genel toplamı güncelle }); } // Para birimi seçimini dinle const paraBirimiRadyolar = document.querySelectorAll('input[name="para"]'); paraBirimiRadyolar.forEach(radio => { radio.addEventListener('change', function() { hesaplaAraToplam(); hesaplaGenelToplam(); }); }); // Ara toplamı hesapla ve görüntüle function hesaplaAraToplam() { let araToplam = 0; // Tüm toplam-fiyati inputlarının değerlerini al ve toplama ekle toplamFiyatiInputs.forEach(function (input) { // Sayısal değeri al (binlik ayraçları dahil etme) let value = parseFloat(input.value.replace(/[^0-9.-]+/g, "")); // Binlik ayraçları temizle araToplam += isNaN(value) ? 0 : value; }); const selectedCurrency = document.querySelector('input[name="para"]:checked').value; let symbol = selectedCurrency === "TL" ? "₺" : selectedCurrency === "USD" ? "$" : "€"; // Ara toplamı span içinde görüntüle const araToplamSpan = document.querySelector(".ara-toplam"); if (araToplamSpan) { araToplamSpan.textContent = araToplam.toLocaleString('tr-TR', { minimumFractionDigits: 2, maximumFractionDigits: 2 }) + " " + symbol; } } // Genel toplamı hesapla ve görüntüle function hesaplaGenelToplam() { const araToplamSpan = document.querySelector(".ara-toplam"); let araToplam = 0; if (araToplamSpan && araToplamSpan.textContent) { araToplam = parseFloat(araToplamSpan.textContent.replace(/[^0-9.-]+/g, "")) || 0; } const discountValueInput = document.getElementById("discountValue"); let iskontoDeger = 0; if (discountValueInput && discountValueInput.value) { iskontoDeger = parseFloat(discountValueInput.value.replace(/[^0-9.-]+/g, "")) || 0; } const discountTypeSelect = document.getElementById("discountType"); const iskontoTuru = discountTypeSelect ? discountTypeSelect.value : "%"; let indirimMiktari = 0; const selectedCurrency = document.querySelector('input[name="para"]:checked').value; let symbol = selectedCurrency === "TL" ? "₺" : selectedCurrency === "USD" ? "$" : "€"; // İskonto türüne göre işlem ve indirim miktarını hesapla if (iskontoDeger > 0) { document.getElementById("topluIskontoGoster").style.display = "block"; if (iskontoTuru === "%") { if (iskontoDeger > 100) { if (discountValueInput) { discountValueInput.value = 100; } iskontoDeger = 100; } indirimMiktari = (araToplam * iskontoDeger) / 100; document.getElementById("topluIskontoDeger").textContent = "(%" + iskontoDeger + ") - " + indirimMiktari.toLocaleString('tr-TR', { minimumFractionDigits: 2, maximumFractionDigits: 2 }) + " " + symbol; } else if (iskontoTuru === "birim") { indirimMiktari = iskontoDeger; document.getElementById("topluIskontoDeger").textContent = "(" + iskontoDeger.toLocaleString('tr-TR', { minimumFractionDigits: 2, maximumFractionDigits: 2 }) + " " + symbol + ") - " + indirimMiktari.toLocaleString('tr-TR', { minimumFractionDigits: 2, maximumFractionDigits: 2 }) + " " + symbol; } } else { document.getElementById("topluIskontoDeger").textContent = ""; document.getElementById("topluIskontoGoster").style.display = "none"; indirimMiktari = 0; // İskonto yoksa indirim miktarı sıfır olmalı } // Genel toplamı hesapla (ara toplamdan indirimi çıkar) let genelToplam = araToplam - indirimMiktari; genelToplam = genelToplam < 0 ? 0 : genelToplam; // Genel toplamı span içinde güncelle const genelToplamSpan = document.getElementById("genel-toplam"); if (genelToplamSpan) { genelToplamSpan.textContent = genelToplam.toLocaleString('tr-TR', { minimumFractionDigits: 2, maximumFractionDigits: 2 }) + " " + symbol; } } // Sayfa yüklendiğinde ilk hesaplamaları yap hesaplaAraToplam(); hesaplaGenelToplam(); }); </script>
İnput Otomatik Toplama İşlemi HK. Sorum Var
1
●80
- 05-04-2025, 03:50:48Merhabalar ben number input var burda js ile otomatik inputlar doluyor miktar artıkça otomatik satır toplamı artıyor ama ara toplam kısmı var burda veri satır toplamdan silip ekleyince aktif hale geliyor. kodda sorunlar var çözemedim yanlış hesaplama yapıyor.Bu Konuda yardımcı olabilir misin? Ödev yapamadım Yapay zekadanda yardım olmadı.