<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ı.